Что делать, если LOGON-триггер сбрасывает все подключения к SQL-серверу?

Что делать, если LOGON-триггер сбрасывает все подключения к SQL-серверу?Триггер входа — очень полезный механизм. Однако, обращаться с ним следует осторожно. LOGON-триггеры срабатывают ещё до того, как пользователь начнёт работу с SQL-сервером, поэтому если такой триггер написан неаккуратно или срабатывает с ошибкой, пользователи, включая администраторов, просто не смогут подключиться к серверу.

Вот пример триггера входа, который умышленно написан так, чтобы сбрасывать все попытки подключения к серверу:

1

LOGON-триггер, сбрасывающий все подключения

Теперь при попытке установить соединение с SQL-сервером, получаем сообщение об ошибке, случившейся во время выполнения триггера входа:

2

LOGON-триггер вызывает сброс соединения

Если вы попали в такую ситуацию, придётся воспользоваться специальной лазейкой, которая позволяет администратору подключиться к SQL-серверу в обход LOGON-триггеров. Такое «сервисное» подключение доступно только членам серверной роли SysAdmin. Обратите внимание, что возможность удалённого сервисного подключения может быть отключена в настройках, тогда придётся работать прямо на сервере.

В утилите SQLCmd воспользоваться сервисным подключением можно, указав параметр -A:

3

DAC через SQLCmd

А при подключении из студии используйте префикс ADMIN: перед именем сервера. Вот так:

4

DAC через SQL Server Management Studio

Такое подключение не предназначено для полноценной работы с данными, только для решения проблем с доступностью сервера. Но удалить или отключить триггер вы сможете.

Автор: Самородов Федор Анатольевич

Запись опубликована в рубрике Полезно и интересно с метками . Добавьте в закладки постоянную ссылку.

Добавить комментарий

Войти с помощью: