質問

使用してメールを送信しようとしています 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_dbmailselect * from ##tempTable > 0行がある場合。

少なくとも元のクエリ2xを実行するよりも優れているはずです(動作する場合)。終わったらドロップすることを忘れないでください!

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top