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_header
を0
、@query_no_truncate
をに設定してみてください1
。
@query_result_header = 1
@query_no_truncate = 0
query_result_header
クエリ結果に列ヘッダーが含まれるかどうかを指定します。
´query_result_header´ 値は「ビット」型です。値が 1 の場合、クエリ結果には列ヘッダーが含まれます。値が 0 の場合、クエリ結果には列ヘッダーは含まれません。このパラメータのデフォルトは 1 です (@query が指定されている場合にのみ適用されます)。