Триггер для захвата изменений схемы на сервере - PullRequest
3 голосов
/ 07 апреля 2009

Возможно ли реализовать что-то вроде следующего триггера

CREATE TRIGGER [tr_AU_ddl_All_Server] ON DATABASE
    WITH EXECUTE AS self
    FOR DDL_DATABASE_LEVEL_EVENTS
AS
    DECLARE
        @data XML
      , @rc INT
    SET @data = EVENTDATA()
    EXEC @rc = __AU.dbo.AU_DDLLog @data
GO

НО на всем сервере. Моя идея состоит в том, чтобы фиксировать все изменения схемы во всех базах данных на сервере.

Насколько я понимаю, это невозможно в SQL Server 2005, но я хотел бы знать, есть ли у кого-нибудь подобное, чтобы это работало. Я хотел бы избежать использования триггера в каждой базе данных.

1 Ответ

7 голосов
/ 07 апреля 2009

Да, в SQL Server 2005 введены «триггеры DDL». Прочитайте отличную статью здесь: Команда SQL .

Эта статья прекрасно показывает, что это две области действия для триггеров DDL - для всего сервера или для всей базы данных. Те, которые являются общими для всей базы данных, не могут быть применены ко всему серверу - вам нужно будет настроить их в каждой базе данных.

Марк

...