sp_send_dbmail erfolgreich, schlägt aber manchmal fehl

sp_send_dbmail erfolgreich, schlägt aber manchmal fehl

Auch in Stack Overflow gepostet. Für jedes Feedback wäre ich sehr dankbar.

Ich benötige einen SQL-Job, um mehrere E-Mails zu senden, und bin auf diesen Fehler gestoßen, für den ich keine Lösung finden kann. Wenn ich E-Mails auf diese Weise sende, funktioniert es jedes Mal, wenn ich es getestet habe.

EXEC msdb.dbo.sp_send_dbmail
@profile_name = 'AzureManagedInstance_dbmail_profile',
@recipients = '*Valid Email Address*',
@body = 'test',
@subject = 'Testing';

Wenn ich der E-Mail eine Abfrage hinzufüge, schlägt der Auftrag gelegentlich fehl.

Ich habe einen Ausschnitt herausgezogen und die SELECT-Abfrage vereinfacht, die das Problem reproduziert.

EXEC msdb.dbo.sp_send_dbmail
@profile_name = 'AzureManagedInstance_dbmail_profile',
@recipients = '*Valid Email Address*',
@body = 'test',
@query = 
'
SELECT GETDATE()
',
@subject = 'Testing';

Wenn ich dies ausführe, wird mir erfolgreich eine E-Mail mit Datum und Uhrzeit gesendet. Wenn ich den Code erneut ausführe, erhalte ich den allgemeinen Fehler, aber nicht immer.

Initialisierung der sqlcmd-Bibliothek fehlgeschlagen, Fehlernummer -2147467259.

Ich habe ein bisschen mit SQL Server Profiler herumgesucht und bin auf diese Fehlermeldung gestoßen

Die Verbindung wurde getrennt, weil der Prinzipal, der sie geöffnet hat, anschließend einen neuen Sicherheitskontext angenommen und dann versucht hat, die Verbindung unter seinem imitierten Sicherheitskontext zurückzusetzen. Dieses Szenario wird nicht unterstützt. Weitere Informationen finden Sie in der Onlinedokumentation unter „Übersicht über Identitätswechsel“.

Ich verwende derzeit ein SA-Konto, habe aber mit den minimal erforderlichen Berechtigungen begonnen.

Ich habe versucht, den Job unter dem allgemeinen E-Mail-Profil auszuführen, mit demselben Ergebnis.

Der Job, der diesen Code ausführt, wird erfolgreich sein und scheitern, ohne dass ich einen erkennbaren Grund dafür finden kann. Es scheint auch kein Muster dafür zu geben, ob der Job erfolgreich ausgeführt wird oder nicht.

Ist irgendjemand auf dieses Problem gestoßen und hat es lösen können? Oder kann mir irgendjemand einen Weg weisen, wie ich das Problem lösen kann?

Antwort1

@query_result_headerVersuchen Sie, auf 0und @query_no_truncateauf einzustellen 1.

@query_result_header = 1
@query_no_truncate = 0

query_result_headerGibt an, ob die Abfrageergebnisse Spaltenüberschriften enthalten.

Der Wert ´query_result_header´ ist vom Typ „bit“. Wenn der Wert 1 ist, enthalten die Abfrageergebnisse Spaltenüberschriften. Wenn der Wert 0 ist, enthalten die Abfrageergebnisse keine Spaltenüberschriften. Dieser Parameter ist standardmäßig auf 1 eingestellt (und ist nur anwendbar, wenn @query angegeben ist).

verwandte Informationen