Отключить зависание триггера? - PullRequest
0 голосов
/ 12 января 2010

Мне нужно сделать это из веб-приложения ASP.NET:

Alter Table Contacts Disable Trigger All 
-- Do some stuff
Alter Table Contacts Enable Trigger All

В некоторых ситуациях оператор Disable Trigger зависает. Где я должен начать искать, чтобы выяснить, что вызывает это? Если я перезагружаю SQL-сервер, он снова начинает работать нормально.

1 Ответ

3 голосов
/ 12 января 2010

Посмотрите на Activity Monitor из SSMS, чтобы увидеть , почему он блокируется. Или вы можете посмотреть в blocking_session_id столбец sys.dm_exec_requests.

Мое предположение: изменения схемы требуют блокировки модификации схемы на таблице. Любая операция (например, SELECT, UPDATE и т. Д.) Помещает блокировку стабильности схемы в таблицу, блокируя любой ALTER до завершения SELECT. Таким образом, отключение триггера ALTER блокируется всеми инструкциями ожидающего доступа к таблице (SELECT).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...