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 に答える