2014-12-15 3 views
0

누군가가 데이터베이스의 테이블을 변경하면 작동하지만 갑자기 중지됨 ... 데이터베이스가 여전히 전자 메일을 보낼 수 있음을 알리는 트리거가 있습니다. 더 많은 트리거 여전히 작동) 및 내 로그 테이블에 삽입, 그래서, 어떤 생각인지 작동합니까? 이메일에 관계없이 일어나고 삽입 이후SQL Server 트리거가 전자 메일을 보내지 않음

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 = '[email protected]', 
     @subject = @_SUBJECT, 
     @body = 'Changes on DB'; 

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



GO 
+0

데이터베이스 메일 로그에있는 메시지는 무엇입니까? 또는 SQL Server 로그? – DMason

+0

아니요. (그러나 로그에 삽입이 발생하는 동안 전자 메일 만 보내지는 않는다는 사실을 깨달았습니다 ... 삽입 된 메일의 다른 트리거로 이메일을 이동시킬 것입니다 ... – Rafa

+0

글쎄 ... 하지만 그게 문제를 해결하는 더러운 방법 같아요. 어떤 식 으로든 누군가가 아이디어를 가지고 있다면 알려주세요. – Rafa

답변

0

그래서, 보내거나하지, 난 일 이메일을 보냅니다 삽입 한 후 다른 트리거를 생성,하지만 난 그게이 문제를 해결하는 좋은 방법이 아니다 추측되고 누군가에게 아이디어가 있으면 알려주세요.

0

sp_send_dbmail으로 전화하여 @subject@body이 (가) 반대로 표시 될 수 있습니다. 따라서 @subject에는 인식 할 수없는 문자가 포함되어있을 수 있지만 @body에는 문제가 없습니다.

+0

실제로 나는 그 질문을 변경하려고했습니다. 왜냐하면 나는 그 질문이 너무 길어서 문제가 해결되지 않았다. – Rafa

+0

@sdmon 이제 트리거가 분리되었으므로 전자 메일에서 ALTER 이벤트를 보내겠습니까? 예처럼 들리지만 명확하게 명확하지는 않습니다. –

+0

예, 작동하지만 무슨 일이 일어 났는지 알고 싶습니다 : S – Rafa