sp_send_dbmail は成功するが、時々失敗する

sp_send_dbmail は成功するが、時々失敗する

Stack Overflow にも投稿されています。フィードバックをいただければ幸いです。

複数のメールを送信する SQL ジョブが必要なのですが、解決策が見つからないというエラーが発生しています。この方法でメールを送信すると、テストするたびに成功します。

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

電子メールにクエリを追加すると、ジョブが失敗することがあります。

スニペットを抽出し、問題を再現する SELECT クエリを簡略化しました。

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

これを実行すると、日時が記載されたメールが正常に送信されますが、コードを再度実行すると一般的なエラーが発生しますが、常にそうとは限りません。

エラー番号 -2147467259 により、sqlcmd ライブラリの初期化に失敗しました。

SQL Server Profilerで調べてみたところ、このエラーメッセージに遭遇しました。

接続を開いたプリンシパルがその後新しいセキュリティ コンテキストを想定し、偽装したセキュリティ コンテキストで接続をリセットしようとしたため、接続が切断されました。このシナリオはサポートされていません。Books Online の「偽装の概要」を参照してください。

現在、SA アカウントを使用していますが、最初は最小限の実行可能な権限で始めました。

汎用電子メール プロファイルでジョブを実行してみましたが、結果は同じでした。

このコードを実行するジョブは、明らかな理由が見つからないまま成功したり失敗したりします。ジョブが正常に実行されるか、実行されないかのパターンもないようです。

この問題に遭遇し、解決できた人はいますか? または、解決方法を教えてくれる人はいますか?

答え1

@query_result_header0@query_no_truncateをに設定してみてください1

@query_result_header = 1
@query_no_truncate = 0

query_result_headerクエリ結果に列ヘッダーが含まれるかどうかを指定します。

´query_result_header´ 値は「ビット」型です。値が 1 の場合、クエリ結果には列ヘッダーが含まれます。値が 0 の場合、クエリ結果には列ヘッダーは含まれません。このパラメータのデフォルトは 1 です (@query が指定されている場合にのみ適用されます)。

関連情報