5. Отладив команды, выполнить процедуру (EXEC del_zakaz), закоментировав команду rollback transaction (/*rollback transaction*/).
6. Перейти в СУБД Access и попытаться открыть присоединенную таблицу.
7. Перейти в СУБД SQL Server и выполнить запрос
select * from z_zakaz
Построить график запуска транзакций и граф ожидания.
График транзакций
Время | SQL Server – QA (A) | Access (B) | SQL Server – QA (С) |
t1 | X-locks Лас-Вегас ® P | ||
t2 | wait | ||
t3 | … | S-locks | |
t4 | … | wait | |
t5 | … | … | S-locks |
t6 | … | … | wait |
t7 | … | … | … |
Результат: Тупиковая ситуация – взаимное ожидание разблокировки.
Граф ожидания
Замечание: Здесь граф ожидания имеет цикл за счет того, что транзакция А является искусственно незавершенной и постоянно вступает в конфликт с транзакциями, пытающимися параллельно считать данные (транзакции В и С).
Для корректного завершения смеси транзакций, независимо выполните команду rollback transaction в Query Analyzer.
8. Выполнить те же действия, что и в п. 4, но с первоначально открытой таблицей в приложении СУБД Access, в которой до запуска транзакции в SQL Server выполнены (но не подтверждены) изменения. После выполнения процедуры del_zakaz без завершения (/*rollback transaction*/) вернитесь в СУБД Access и подтвердите сделанные изменения.
|
|
Построить график запуска транзакций и граф ожидания.
График транзакций
Время | SQL Server – QA (A) | Access (B) | SQL Server – QA (С) |
t1 | X-locks Лас-Вегас ® P | ||
t2 | wait | ||
t3 | X-locks | … | |
t4 | wait | … | |
t5 | … | … | S-locks |
t6 | … | … | wait |
t7 | … | … | … |
Результат: Тупиковая ситуация – взаимное ожидание разблокировки.
Граф ожидания
Замечание: Здесь также граф ожидания имеет цикл за счет того, что транзакция А и В являются искусственно незавершенными и постоянно вступают в конфликт с транзакциями, пытающимися параллельно считать данные.
Для корректного завершения смеси транзакций, независимо выполните команду rollback transaction в Query Analyzer.
(4)