所以,当有人在数据库的任何表上进行更改时,我有一个触发器提醒我,它正在工作但突然停止了...数据库仍然能够发送电子邮件(我有更多触发器仍在工作)和插入到我的日志表中是有效的,所以,任何想法?
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
答案 0 :(得分:0)
由于无论发送的电子邮件是否发生都会发生插入,我在发送电子邮件的插入后创建了另一个触发器,但是我认为这不是解决此问题的好方法,所以,如果有人有个主意请告诉我
答案 1 :(得分:0)
这种情况可能会发生,因为您在@subject
的调用中反对@body
和sp_send_dbmail
。因此,@subject
可能会包含一些不受欢迎的字符,但@body
会很好。