Назад | Перейти на главную страницу

Как отключить триггер, убивший доступ к SQL?

http://social.msdn.microsoft.com/Forums/en-US/sqldatabaseengine/thread/f9236131-cfcc-48ed-b431-57884842e874/

Мне нужно было ограничить доступ к Sql Mgt Studio для определенных пользователей. Я нашел статью выше, в которой создается триггер, предотвращающий установление соединений для определенных пользователей.

CREATE TRIGGER [SQLGP_Logon_trigger_sql_tools]

ON ALL SERVER FOR LOGON

AS

BEGIN

  IF ORIGINAL_LOGIN() not in ('domain\Administrator',
    'sa',
    'domain\user1',
    'domain\user2',
    'domain\user3') AND 
    (program_name() like 'Microsoft SQL Server Management Studio' 
    or program_name() like 'Microsoft SQL Server Management Studio - Query' 
    or program_name() like 'SQL Query Analyzer')
  ROLLBACK

END

Играя с кодом на нашем сервере разработки, я создал триггер, предотвращающий доступ для всех пользователей. Я попытался использовать osql для подключения, но получил сообщение об ошибке

Не удалось войти в систему для входа в систему "someuser" из-за выполнения триггера.

Это похоже на сообщение, которое вы получаете при подключении к Sql Mgt Studio.

Есть ли способ принудительно отключить этот триггер?

Подключитесь к админке. В типе SSMS admin:servername\instance как имя сервера. Обычно соединение DAC разрешено только локально, поэтому вам следует попробовать его с хоста сервера. Если это тоже не удается (я не могу вспомнить, запускает ли DAC триггер входа в систему), всегда существует административный запуск одного пользователя сервера sqlservr -m