Benutzer mit den meisten Antworten
sp_send_dbmail klappt nicht aus DDL Trigger heraus

Frage
-
Hallo Stefan,
erstmal danke für die Info!
Jedoch kann ich aus dem Trigger heraus keine Mail senden.
Ich dacht mir folgendes sollte doch gehen:
USE [master] GO /****** Object: DdlTrigger [trg_CreateDatabase] Script Date: 23.03.2020 21:32:48 ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO CREATE TRIGGER [trg_CreateDatabase] ON ALL SERVER FOR CREATE_DATABASE AS EXEC msdb.dbo.sp_send_dbmail @profile_name = 'Mailversand', @importance = 'High', @recipients = 'mail@mail.mail', @query = 'SELECT getdate()' , @subject = 'Testlauf2', @attach_query_result_as_file = 1, --@body = @bodytext; @body = 'test', @body_format = 'HTML' ; --SELECT EVENTDATA().value( '(/EVENT_INSTANCE/TSQLCommand/CommandText)[1]','nvarchar(max)' ) GO ENABLE TRIGGER [trg_CreateDatabase] ON ALL SERVER GO
Jedoch erhalte ich keine Mail wenn ich eine neue Datenbank anlege! Der Server versucht krampfhaft die Datenbank anzulegen aber mehr als "wird ausgeführt" ist nicht zu sehen!
An was liegt das ? Kannst du helfen?
Führe ich den Mailversand so aus, funktioniert alles. Daran kann es also nicht liegen.
[Moderator Stefan Falz]
Split: Originalthread: Trigger auf sys.databases- Geteilt Stefan FalzModerator Montag, 23. März 2020 22:20 Neue Frage, neuer Thread
- Bearbeitet Stefan FalzModerator Montag, 23. März 2020 22:25 Link zu Originalthread eingefügt
Antworten
-
Hier sind mal ein paar Statements zum Troubleshooting. Beachte bitte auch, wer die Mail schicken will und welches Profil dann zum Einsatz kommen wird!
-- Protokoll anzeigen SELECT * FROM msdb.dbo.sysmail_event_log order by log_date desc; -- Queue anzeigen exec msdb..sysmail_help_queue_sp @queue_type = 'Mail' ; EXEC msdb.dbo.sysmail_stop_sp; EXEC msdb.dbo.sysmail_start_sp; EXEC msdb.dbo.sysmail_help_status_sp ; EXECUTE msdb.dbo.sysmail_help_queue_sp ; GO -- Welche einfachen Benutzer dürfen Mail verwenden? EXEC msdb.sys.sp_helprolemember 'DatabaseMailUserRole' ; Use msdb go sp_addrolemember @rolename = 'DatabaseMailUserRole', @membername = '<benutzer>'; -- Welche öffentlichen Profile sind verfügbar? EXEC msdb.dbo.sysmail_help_principalprofile_sp ; -- Welche Profile sind insgesamt definiert? EXEC msdb.dbo.sysmail_help_profile_sp ; -- Wer hat was geschickt? SELECT sent_account_id, send_request_user, sent_date, recipients, blind_copy_recipients, subject, body, file_attachments FROM msdb.dbo.sysmail_sentitems order by sent_date desc; -- Was hat nicht funktioniert? SELECT * FROM msdb.dbo.sysmail_faileditems order by mailitem_id; -- Was ist noch nicht gesendet? SELECT * FROM msdb.dbo.sysmail_unsentitems order by mailitem_id;
HTH!
Einen schönen Tag noch, Christoph - http://www.insidesql.org/blogs/cmu
- Als Antwort vorgeschlagen Dimitar DenkovMicrosoft contingent staff, Administrator Freitag, 27. März 2020 06:08
- Als Antwort markiert Dimitar DenkovMicrosoft contingent staff, Administrator Mittwoch, 8. April 2020 13:57
Alle Antworten
-
Hi,
Eine Mail zu versenden hat mit einem DDL Trigger nichts zu tun und das Fehlschlagen dieses Tasks kann die verschiedensten Ursachen haben.
Daher habe ich die neue Frage in einen neuen Thread ausgelagert.
Gruß, Stefan
Microsoft MVP - Visual Developer ASP/ASP.NET (2001-2018)
https://www.asp-solutions.de/ - IT Beratung, Softwareentwicklung, Remotesupport- Bearbeitet Stefan FalzModerator Montag, 23. März 2020 22:56
-
Hi,
klappt denn der Aufruf auf sp_send_dbmail, wenn Du den nicht in einem Trigger ausführst?
Ein generelles Problem ist es nicht, in einem Test meinerseits hat das problemlos funktioniert. Daher denke ich eher mal, dass deine Database Mail Konfiguration nicht passt.
Gruß, Stefan
Microsoft MVP - Visual Developer ASP/ASP.NET (2001-2018)
https://www.asp-solutions.de/ - IT Beratung, Softwareentwicklung, Remotesupport- Bearbeitet Stefan FalzModerator Montag, 23. März 2020 22:55
-
Hier sind mal ein paar Statements zum Troubleshooting. Beachte bitte auch, wer die Mail schicken will und welches Profil dann zum Einsatz kommen wird!
-- Protokoll anzeigen SELECT * FROM msdb.dbo.sysmail_event_log order by log_date desc; -- Queue anzeigen exec msdb..sysmail_help_queue_sp @queue_type = 'Mail' ; EXEC msdb.dbo.sysmail_stop_sp; EXEC msdb.dbo.sysmail_start_sp; EXEC msdb.dbo.sysmail_help_status_sp ; EXECUTE msdb.dbo.sysmail_help_queue_sp ; GO -- Welche einfachen Benutzer dürfen Mail verwenden? EXEC msdb.sys.sp_helprolemember 'DatabaseMailUserRole' ; Use msdb go sp_addrolemember @rolename = 'DatabaseMailUserRole', @membername = '<benutzer>'; -- Welche öffentlichen Profile sind verfügbar? EXEC msdb.dbo.sysmail_help_principalprofile_sp ; -- Welche Profile sind insgesamt definiert? EXEC msdb.dbo.sysmail_help_profile_sp ; -- Wer hat was geschickt? SELECT sent_account_id, send_request_user, sent_date, recipients, blind_copy_recipients, subject, body, file_attachments FROM msdb.dbo.sysmail_sentitems order by sent_date desc; -- Was hat nicht funktioniert? SELECT * FROM msdb.dbo.sysmail_faileditems order by mailitem_id; -- Was ist noch nicht gesendet? SELECT * FROM msdb.dbo.sysmail_unsentitems order by mailitem_id;
HTH!
Einen schönen Tag noch, Christoph - http://www.insidesql.org/blogs/cmu
- Als Antwort vorgeschlagen Dimitar DenkovMicrosoft contingent staff, Administrator Freitag, 27. März 2020 06:08
- Als Antwort markiert Dimitar DenkovMicrosoft contingent staff, Administrator Mittwoch, 8. April 2020 13:57