Триггеры уровня сервера отвечают на события изменения на сервере. Вы используете предложение all server для реализации триггеров уровня сервера. В зависимости от указанного действия существуют две разновидности триггеров уровня сервера: условные триггеры DDL и триггеры входа в систему. События условных триггеров DDL основываются на операторах DDL, тогда как триггеры входа в систему обрабатывают событие подключения к системе.
В примере 14.8 показан триггер уровня сервера, который является в то же самое время и триггером входа в систему.
В примере 14.8 вначале создается учетная запись SQL Server с именем logintest. Эта учетная запись впоследствии используется в триггере уровня сервера. По этой причине ей требуется полномочие view server state, которое ей предоставляется при помощи оператора grant. После этого создается триггер connection_limit_trigger, который принадлежит к триггерам уровня сервера, потому что используется ключевое слово logon. Использование представления sys.dmexecsessions дает вам возможность проверить, установлена ли уже сессия с помощью учетной записи logintest. В этом случае выполняется оператор rollback. Таким способом можно устанавливать в одно и то же время только одну сессию с учетной записью logintest.