2014-01-22 4 views
1

Я хочу создать триггер, который отправляет мне имя базы данных, созданной на сервере. Всякий раз, когда создается БД, я должен получить электронное письмо. Пожалуйста помоги.DDL Trigger с примером

Я попытался следующий код просто возвращает оператор печати, но это не работает:

IF EXISTS (SELECT * FROM sys.server_triggers 
WHERE name = 'ddl_trig_database') 
DROP TRIGGER ddl_trig_database 
ON ALL SERVER; 
GO 
CREATE TRIGGER ddl_trig_database 
ON ALL SERVER 
FOR CREATE_DATABASE 
AS 
PRINT 'Database Created.' 
SELECT EVENTDATA().value('(/EVENT_INSTANCE/TSQLCommand/CommandText)[1]','nvarchar(max)') 
GO 
DROP TRIGGER ddl_trig_database 
ON ALL SERVER; 
GO 
+1

Ваш триггер отлично работает для меня. Конечно, в этом точном скрипте вы бросаете триггер (если он существует), а затем создаете триггер, а затем снова возвращаете его. Следующий вопрос: как получить это, чтобы отправить вам электронное письмо; [для этого есть много ответов] (http://stackoverflow.com/search?tab=votes&q=%5bsql-server%5d%20send%20e-mail). Если вы добавите код, который пытается отправить электронное письмо, и вы не можете заставить его работать, вернитесь сюда с конкретными вопросами об этом коде. –

ответ

0

Ваш пример является один на MSDN. Вот пример того, аудит БД, который был создан:

CREATE TABLE master.dbo.NewDB 
(
    DbName NVARCHAR(200), 
    DateCreated DATETIME CONSTRAINT DF_NewDBCreated DEFAULT(CURRENT_TIMESTAMP) 
) 
GO 

CREATE TRIGGER ddl_trig_database 
    ON ALL SERVER 
    FOR CREATE_DATABASE 
AS 
    INSERT INTO master.dbo.NewDB(DbName) 
     SELECT EVENTDATA() 
    .value('(/EVENT_INSTANCE/TSQLCommand/CommandText)[1]','nvarchar(max)') 
GO 


CREATE DATABASE DB1 
GO 
CREATE DATABASE DB2 
GO 
SELECT * FROM master.dbo.NewDB; 

...

CREATE DATABASE DB1 2014-01-22 16:57:43.280  
    CREATE DATABASE DB2 2014-01-22 16:57:47.250 
+0

hi StuartLC Как создать триггеры входа – Anjali

+0

@Anjali - Добро пожаловать в Stackoverflow. Вместо того, чтобы задавать вопрос на старом посту, вам нужно опубликовать новый вопрос (после проверки, чтобы не было существующих дубликатов вашего вопроса). Старые вопросы, подобные этому, не получают большого внимания. – StuartLC

Смежные вопросы