2009-08-01 17 views
6

xp_sendmailsp_send_dbmail procの違いは何ですか?彼らは両方指定された受信者にクエリ結果セットアタッチメントを含むかもしれない電子メールメッセージを送信します.....差xp_sendmailとsp_send_dbmail proc

違いは何ですか?

答えて

15

xp_sendmailには、OutlookなどのMAPIクライアントがサーバーにインストールされている必要があります。これはSQL Server 2000以前の唯一のオプションです。

sp_send_dbmailは、単純なSMTPソリューションである、2005+

sp_send_dbmailがはるかに良いことであるSQL Serverの追加。

+0

ありがとうございました。私は理解しています! –

3

もう1つの違いは、トランザクションがロールバックされた場合、sp_send_dbmail()を使用して送信された電子メールメッセージがロールバックされる(送信されない)ことです。これは、xp_sendmail()を使用して送信された電子メールでは発生しません。

したがって、トランザクションの最終結果に関係なく電子メールメッセージを送信する場合は、xp_sendmail()を使用する必要があります。

SPが処理を完了できなかった場合、ユーザーに通知する電子メールを送信していました。もちろん、私はそのイベントでトランザクションをロールバックしていました。 sp_send_dbmail()に切り替えると、ロールバックされていたトランザクション(電子メール通知を取得したいトランザクション)が電子メールの送信を停止しました。

+0

トランザクションのロールバックに関係なくメッセージを送信する必要がある場合でも、 'sp_send_dbmail'を使用することができます。すべての情報をテーブル変数に格納し、ロールバック後に送信します。 – ajeh

0

私たちは呼び出しコードを制御しません - それは閉じられ、トランザクションでspを呼び出します。メールキューを直接送信またはフラッシュする機能がSQL Serverに必要です。

+0

あなたの答えは質問に関連していないという印象を与えます。 – Yunnosch

+0

これは、sp_send_dbmailでの相違、キューイング、および後でロールバックされるトランザクションから電子メールを送信する際の問題の1つに関連しています。私たちの場合、ロールバックはしないので、何も保存することはできません。それは21:21コメントのajeh 3月21日に関連しています。 –