0

所以,我有一个触发器,当有人对数据库的任何表进行更改时,它会提醒我,它正在工作但突然停止了......数据库仍然能够发送电子邮件(我还有更多触发器仍在工作)并且插入我的日志表正在工作,所以,有什么想法吗?

CREATE TRIGGER [_trALterTable] 
ON DATABASE 
FOR ALTER_TABLE, DROP_TABLE, CREATE_TABLE
AS 
    DECLARE @_SUBJECT NVARCHAR(MAX);
    SELECT @_SUBJECT = EVENTDATA().value('(/EVENT_INSTANCE/TSQLCommand/CommandText)[1]','nvarchar(max)')


    exec msdb.dbo.sp_send_dbmail
        @profile_name = 'Notifications',
        @recipients = 'my.email@g.com',
        @subject = @_SUBJECT,
        @body = 'Changes on DB';

    INSERT TriggerLog
    SELECT @_SUBJECT, COALESCE(SUSER_SNAME(), USER_NAME()), GETDATE(), HOST_NAME() AS HostName;



GO
4

2 回答 2

0

这可能会发生,因为您@subject@body调用sp_send_dbmail. 因此,@subject其中可能有一些不受欢迎的字符,但对于@body.

于 2014-12-15T16:48:24.687 回答
0

由于无论是否发送电子邮件都会发生插入,因此我在插入后创建了另一个触发器来发送电子邮件,这很有效,但我想这不是解决这个问题的好方法,所以,如果有人有想法请让我知道

于 2014-12-15T16:18:47.420 回答