1

Sql Server 2005 を使用してメールを送信しようとしてsp_send_dbmailいます。本文テキストとクエリの両方が添付ファイルとして送信されています。

ただし、クエリが空のデータセットを返す場合があります。

電子メールを送信する前にデータセットの結果をテストする方法はありますか。結果がない場合は、添付ファイルとして送信しないでください。

メールを送信する前にクエリを実行して、結果をテストすることを考えていました。次に、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'

しかし、これは問題を解決するための効率的な方法ではないと思います。

助言がありますか?ティア!!

4

1 に答える 1

1

DBA がこの手順へのアクセスをブロックしているように見えるため、職場のセットアップでこれをテストできませんでした。ただし、sp_send_dbmail呼び出しスクリプトでローカル変数を使用しないことはわかっていますが、グローバル一時テーブルを使用できる可能性があります。

これは優れた解決策ではありませんが、クエリの結果セットを ##tempTable に挿入してから、行が 0 行を超える場合は渡すクエリを変更してみてsp_send_dbmailくださいselect * from ##tempTable

これは、少なくとも元のクエリを 2 回実行するよりも優れているはずです (機能する場合)。終わったら捨てるのを忘れずに!

于 2011-02-02T17:07:55.407 に答える