すでにデータベースメールアカウントをプロファイルに追加しているが、シーケンス番号を変更したい場合は、sysmail_update_profileaccount_sp
を使用して変更できます。 ストアドプロシージャ。
これを行うときは、アカウントとプロファイルの両方の名前またはIDを提供する必要があります。これは、更新するプロファイル/アカウントの関連付けを正確に指定する必要があるためです。
例
デモンストレーションの例を次に示します。
EXECUTE msdb.dbo.sysmail_update_profileaccount_sp
@profile_name = 'DB Admin Profile',
@account_name = 'DB Admin',
@sequence_number = 2;
この例では、「DB管理者プロファイル」というプロファイル内の「DB管理者」というアカウントのシーケンス番号を変更します。
この場合、シーケンス番号を2に変更しました。これは、「DB Admin」アカウントは、最初のアカウントに障害が発生した場合にのみ使用されることを意味します。
プロファイル/アカウントIDの使用
この例では、名前の代わりにプロファイルとアカウントIDを使用します:
EXECUTE msdb.dbo.sysmail_update_profileaccount_sp
@profile_id = 1,
@account_id = 1,
@sequence_number = 3;
IDと名前の組み合わせを使用する
または、一方のIDともう一方の名前を指定することもできます。
例:
EXECUTE msdb.dbo.sysmail_update_profileaccount_sp
@profile_name = 'DB Admin Profile',
@account_id = 1,
@sequence_number = 4;
またはその逆:
EXECUTE msdb.dbo.sysmail_update_profileaccount_sp
@profile_id = 1,
@account_name = 'DB Admin',
@sequence_number = 1;
シーケンス番号はどのように機能しますか?
データベースメールプロファイルに複数のアカウントを追加できます。シーケンス番号は、メールを送信するときにプロファイルでそれらのアカウントが使用される順序を決定します。データベースメールは、シーケンス番号が最も小さいアカウントから始まります。そのアカウントが失敗した場合、次に大きいシーケンス番号のアカウントが使用されます。
同じシーケンス番号のアカウントが複数存在する場合、Database Mailは、特定の電子メールメッセージに対してそれらのアカウントの1つのみを使用します。
ただし、同じアカウントが後続のメッセージに使用されるという保証はありません。たとえば、2つのアカウントがシーケンス番号1を共有している場合、一方のアカウントからいくつかのメールを受信し、もう一方のアカウントからいくつかのメールを受信する可能性があります。
このMicrosoftの記事によると、新しい電子メールメッセージを送信すると、データベースメールは実際にはメッセージを正常に送信した最後のアカウントから開始されます。 、またはメッセージがまだ送信されていない場合はシーケンス番号が最も小さいアカウント。
メッセージを正常に送信した最後のアカウントで開始されるという事実は、sysmail_add_profileaccount_sp
の公式ドキュメントには記載されていません。 またはsysmail_update_profileaccount_sp
。
いずれにせよ、これは注意が必要なことであり、DBメールがシーケンス番号を無視しているように見える場合は、髪の毛を引き裂くのを防ぐことができます。
ストアドプロシージャの場所
sysmail_update_profileaccount_sp
に注意してください ストアドプロシージャはmsdb
にあります データベースであり、dbo
が所有しています スキーマ。したがって、msdb
の外部から実行する場合は、3つの部分からなる命名を使用する必要があります。 データベース。
アカウントとプロファイル情報を返す方法
次の記事は、アカウントとプロファイル情報を返すための手順を提供します。
- SQLServerのデータベースメールアカウントのリストを取得する
- SQLServerのデータベースメールプロファイルのリストを返す