SP_SEND_DBMAILクエリの結果セットをテストしますか?
-
28-10-2019 - |
質問
使用してメールを送信しようとしています sp_send_dbmail
SQL Server2005では、ボディテキストとクエリの両方が添付ファイルとして送信されています。
ただし、クエリが空のデータセットを返す場合があります。
メールを送信する前にデータセットの結果をテストする方法はありますか?結果がない場合は、添付ファイルとして送信しません。
メールを送信する前にクエリを実行し、結果をそのようにテストすることを考えていました。それから、私は持っています if-else
次のように:
if @@rowcount >0
EXEC msdb.dbo.sp_send_dbmail @recipients=@recipients_list,
@subject = @subject,
@body = @body_text, @body_format = 'HTML',
@query = @query,
@attach_query_result_as_file = 1,
@query_result_width = 4000,
@query_attachment_filename = 'Details.txt'
else
EXEC msdb.dbo.sp_send_dbmail @recipients=@recipients_list,
@subject = @subject,
@body = @body_text, @body_format = 'HTML'
しかし、これは問題を解決するための効率的な方法ではないと思います。
助言がありますか?ティア!!
解決
さて、DBAがこの手順へのアクセスをブロックしているように見えるので、職場でのセットアップでこれをテストできませんでした。しかし、私はそれを知っています sp_send_dbmail
呼び出しスクリプトでローカル変数は使用しませんが、グローバルな温度テーブルを使用できる場合があります。
これは素晴らしい解決策ではありませんが、クエリの結果セットを## temptableに挿入してから、渡すクエリを変更してみてください。 sp_send_dbmail
に select * from ##tempTable
> 0行がある場合。
少なくとも元のクエリ2xを実行するよりも優れているはずです(動作する場合)。終わったらドロップすることを忘れないでください!
所属していません StackOverflow