Пример 13.5, где одна транзакция имела взаимную блокировку с другой транзакцией, был использован для того, чтобы показать, как создать предупреждающее сообщение о номере системной ошибки. Если транзакция входит во взаимную блокировку с другой транзакцией, то пострадавшая транзакция должна быть выполнена снова. Это можно сделать, помимо других способов, и при помощи предупреждающих сообщений.
Для создания предупреждающего сообщения о взаимной блокировке (и для любой другой ситуации) разверните узел SQL Server Agent, щелкните правой кнопкой мыши по узлу Alerts и выберите пункт New Alert. В диалоговом окне New Alert (рис. 18.7) в поле Name введите имя сообщения, выберите тип сообщения (SQL Server event alert) и из раскрывающегося списка Database name выберите все базы данных- <all databases>. Установите переключатель Error number и введите 1205. (Этот номер ошибки указывает на проблему взаимной блокировки, где текущий процесс был выбран в качестве «потерпевшей стороны»).
Второй шаг определяет реакцию на предупреждающее сообщение. В том же диалоговом окне щелкните по странице Response (рис. 18.8). Вначале отметьте флажок Execute job, а затем выберите задание, которое будет выполняться при появлении предупреждающего сообщения. (Здесь в примере определяется новое задание с именем deadlockalldb, которое заново запускает неудачную транзакцию.) Установите флажок Notify operators, а затем в списке Operator list выберите операторы и методы для извещения (электронная почта, пейджер и/или команда net send).