SQL Server触发器不发送电子邮件

时间:2014-12-15 15:37:06

标签: sql-server-2008 triggers sp-send-dbmail

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

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

2 个答案:

答案 0 :(得分:0)

由于无论发送的电子邮件是否发生都会发生插入,我在发送电子邮件的插入后创建了另一个触发器,但是我认为这不是解决此问题的好方法,所以,如果有人有个主意请告诉我

答案 1 :(得分:0)

这种情况可能会发生,因为您在@subject的调用中反对@bodysp_send_dbmail。因此,@subject可能会包含一些不受欢迎的字符,但@body会很好。