Добавил:
Меня зовут Катунин Виктор, на данный момент являюсь абитуриентом в СГЭУ, пытаюсь рассортировать все файлы СГЭУ, преобразовать, улучшить и добавить что-то от себя Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лабораторный_практикум_по_АБД_sqlserver.docx
Скачиваний:
4
Добавлен:
03.08.2023
Размер:
496.52 Кб
Скачать

Просмотр информации о блокировках

  • Используя утилиту Query Analyzer, установите соединение с аутентификацией Windows (File|Connect…).

  • В окне Query Analyzer запустите системную процедуру sp_lock, чтобы просмотреть, какую информацию о блокировках она предоставляет (см. рис. 3).

Рис.3. Информация о блокировках

  • Просмотрите таблицу блокировок и зафиксируйте ее данные.

  • Выполните системную хранимую процедуру с номерами SPID, которые вы получили на предыдущем шаге, например, так: EXEC sp_who 53

  • Зафиксируйте имена пользователей, связанных с данными процессами.

  • Запустите программу SQL Server Enterprise Manager, разверните свой сервер, разверните папку Management, в ней рубрику Current Activity, а в ней Locks/Process ID, после чего щелкните по номеру последнего SPID. В окне детализации посмотрите сведения о процессе и типе блокировки.

Удержание блокировки на сервере

  • Переключитесь в Query Analyzer, откройте новое соединение (File|Connect…), используя аутентификацию Windows. Первое соединение не закрывайте!

  • Используя второе соединение, запишите в нем текст приведенной выше программы и выполните ее. Просмотрите результаты работы системной хранимой процедуры sp_lock о блокировках. Запишите идентификатор последнего процесса (SPID).

Какие типы блокировок связаны с этим процессом? Каков режим блокировки каждого ресурса?

Переключитесь в SQL Server Enterprise Manager, щелкните правой кнопкой мыши по рубрике Current Activity, выполните команду «Обновить». Раскройте рубрику Locks/Process ID, чтобы просмотреть блокировки второго соединения.

Примечание. Описание основных типов блокировок и механизмов их действия находится в прилож.5.

    1. Обнаружение блокирование блокировок

Переключитесь в Query Analyzer и откройте еще одно новое соединения, не закрывая два предыдущих.

В третьем соединении скопируйте в окно Query Analyzer программу из второго соединения и запустите программу.

Завершился ли запрос?

  • Переключитесь в окно первого соединения и выполните в нем процедуру sp_lock. Просмотрите результаты. По колонки статуса просмотрите, ожидает ли последний процесс какие-либо ресурсы?

  • Переключитесь в Enterprise Manager и обновите окно Current Activity.

  • Раскройте папку Locks/Process ID. Просмотрите информацию о блокировках третьего соединения. Почему запрос в третьем соединении не может быть завершен?

  • В дереве консоли щелкните по блокирующему соединению.

  • В окне детализации выполните двойной щелчок по строке блокировки, и в открывшемся окне завершите этот процесс (Kill Process)|Yes|Close .

  • Переключитесь в Query Analyzer , в окне первого соединения выполните процедуру для показа блокировок sp_lock. Вы увидете, что блокировки, которые были установлены от выполнения транзакции во втором соединении, теперь отсутствуют.

  • Переключитесь в третье соединение. Обратите внимание, что запрос теперь выполнился. Наберите в окне команду Rollback tran, выделите ее и выполните, чтобы завершить транзакцию откатом.

  • Переключитесь в Enterprise Manager, обновите окно Current Activity, просмотрите информацию о блокировках, и убедитесь, что теперь третье соединение удерживает только разделяемые ( S - Shared ) блокировки.

  • Закройте все соединения Query Analyzer.