9

クエリの結果を複数の受信者に送信することになっている、毎晩実行されるストアドプロシージャがあります。ただし、ほとんどの場合、1分後に重複した電子メールを送信することになります。私が使用しているコードは次のとおりです(すべての電子メールとデータベース参照が変更されています):

EXEC msdb.dbo.sp_send_dbmail
@recipients = 'email1@email.com',
@copy_recipients = 'email2@email.com;email3@email.com;email4@email.com',
@subject = 'Example Email',
@profile_name = 'ExampleProfile',
@query = 'SELECT name
    FROM table
    WHERE date BETWEEN (getdate() - 1) AND getdate()',
@attach_query_result_as_file = 1

これに関する助けをいただければ幸いです。

4

8 に答える 8

7

この解決策は、サーバー上のアカウント再試行アカウントの数を0に減らすことであることが判明しました(データベースメール構成ウィザード内)。

于 2013-04-26T13:20:40.213 に答える
0

受信者に重複したメールを送信している場合は、SPが1日に複数回呼び出されていることを意味します。このSPを呼び出しているSQLジョブに設定されている呼び出し時間を確認してください。電子メールの重複を避けるために、1日に1回にする必要があります。

于 2013-03-20T11:10:04.327 に答える
0

SQL Serverから2回送信されておらず、Mail Serverの問題でもない場合は、メールのフィルターを使用してOutlookでメールをチェックしていないことを確認してください。そうすると、メールが2回受信される可能性があります。

于 2013-03-20T12:42:04.203 に答える
0

データベースに別のテーブルを追加して、各受信者に最後に電子メールが送信された日時に関する情報を保持することをお勧めします。

そのようなテーブルがなければ、何が起こっているのかを本当に知ることはできません。誤ってSPを複数回実行した場合はどうなりますか?メールの送信を妨げるものは何もありません。

この問題に関して–メールサーバーは送信済みアイテムのコピーを保持していますか?その場合は、そこにあるすべてのメッセージの送信日を確認することをお勧めします。これはあなたに何が起こっているかについての良い情報を与えるかもしれません。

于 2013-03-22T08:30:36.417 に答える
0

これは、電子メールを受信するアドレス(グループまたは個人のいずれか)の電子メールアドレスが無効になっているために発生します。受け入れられた回答のように再試行を排除することはできますが、最善のアプローチはディストリビューションをクリーンアップすることです。

于 2014-09-24T17:15:52.940 に答える
0

1つのメールに複数の受信者がいて、2通の送信メールが生成されるという同様の問題がありました。問題は、受信者の1人が無効になり、再試行すると、失敗した受信者だけでなく、すべての受信者に電子メールが送信されることになりました。msdbには、無効な受信者を見つけるのに役立つビューがいくつかあります。彼らはdbo.sysmail_<something>を開始します

この問題にはいくつかの解決策があります。

  1. 各受信者を個別の電子メールとして分割します。
  2. リストから無効な受信者を削除します
  3. DBMailの再試行設定を0に設定します
于 2014-12-16T17:16:25.903 に答える
0

@queryでSELECTステートメントを使用してすべての電子メールの本文に一定のテキストを送信し、条件に応じて@bodyと@subjectを使用してカスタムテキストを送信しているときに、これと同じ重複の問題が発生しました。

1つの電子メールには、期待どおりにカスタムテキストとクエリテキストの両方が含まれていました。複製された電子メールには、「SQLServerメッセージ」という件名がシステムに挿入された@queryテキスト(カスタムテキストは含まれていません)のみが含まれていました。

SELECT * FROM msdb.dbo.sysmail_sentitemsを実行し、十分な数の電子メールが2回送信されていることを確認しました。sysmail_configurationを見ると、AccountRetryAttempts paramValue=1であることがわかりました。

ストアドプロシージャから@queryを完全に削除し(変更を実行)、spを実行すると、問題は解決しました。次に、@ queryをspに戻し、変更を実行します。その後、メールは1回だけ送信され始めました。図に行きます。

于 2017-01-11T23:27:41.580 に答える
0

更新時のサイドトリガーの他のトリガーに他のUpdateステートメントがないことを確認してください。

同様の問題に直面した場合でも、トリガーとクロスチェックすると、別のトリガーで別のUpdateステートメントを使用していることがわかりました。それはトリガーに複数の発砲を引き起こしました。したがって、2つのメールがトリガーされました。

于 2017-08-11T05:51:00.407 に答える