Sqlserver
 sql >> Datenbank >  >> RDS >> Sqlserver

So ändern Sie die Sequenznummer eines Datenbank-E-Mail-Kontos in einem Profil in SQL Server (T-SQL)

Wenn Sie einem Profil bereits ein Datenbank-E-Mail-Konto hinzugefügt haben, jetzt aber die Sequenznummer ändern möchten, können Sie dies mit sysmail_update_profileaccount_sp tun gespeicherte Prozedur.

Dabei müssen Sie den Namen oder die ID sowohl des Kontos als auch des Profils angeben. Dies liegt daran, dass Sie genau angeben müssen, welches Profil/welche Kontozuordnung Sie aktualisieren möchten.

Beispiel

Hier ist ein Beispiel zur Veranschaulichung:

EXECUTE msdb.dbo.sysmail_update_profileaccount_sp  
    @profile_name = 'DB Admin Profile',
    @account_name = 'DB Admin',
    @sequence_number = 2;

Dieses Beispiel ändert die Sequenznummer für das Konto mit dem Namen „DB Admin“ innerhalb des Profils mit dem Namen „DB Admin Profile“.

In diesem Fall habe ich die Sequenznummer auf 2 geändert, was bedeutet, dass das Konto „DB Admin“ nur verwendet wird, wenn das erste Konto fehlschlägt.

Verwenden der Profil-/Konto-IDs

In diesem Beispiel verwende ich die Profil- und Konto-IDs anstelle ihrer Namen:

EXECUTE msdb.dbo.sysmail_update_profileaccount_sp  
    @profile_id = 1,
    @account_id = 1,
    @sequence_number = 3;

Verwendung einer Kombination aus ID und Name

Sie können alternativ die ID des einen und den Namen des anderen angeben.

Zum Beispiel:

EXECUTE msdb.dbo.sysmail_update_profileaccount_sp 
    @profile_name = 'DB Admin Profile',
    @account_id = 1,
    @sequence_number = 4;

Oder umgekehrt:

EXECUTE msdb.dbo.sysmail_update_profileaccount_sp
    @profile_id = 1,
    @account_name = 'DB Admin',
    @sequence_number = 1;

Wie funktioniert die Sequenznummer?

Sie können einem Datenbank-E-Mail-Profil mehrere Konten hinzufügen. Die Sequenznummer bestimmt die Reihenfolge, in der diese Konten beim Senden von E-Mails im Profil verwendet werden. Datenbank-E-Mail beginnt mit dem Konto mit der niedrigsten Sequenznummer. Wenn dieses Konto fehlschlägt, wird das Konto mit der nächsthöheren Sequenznummer verwendet und so weiter.

Wenn mehr als ein Konto mit derselben Sequenznummer vorhanden ist, verwendet Database Mail nur eines dieser Konten für eine bestimmte E-Mail-Nachricht.

Es gibt jedoch keine Garantie dafür, dass dasselbe Konto für nachfolgende Nachrichten verwendet wird. Wenn beispielsweise zwei Konten die Sequenznummer 1 gemeinsam haben, erhalten Sie möglicherweise einige E-Mails von einem Konto und einige von dem anderen Konto.

Ich sollte darauf hinweisen, dass laut diesem Microsoft-Artikel Database Mail beim Senden einer neuen E-Mail-Nachricht tatsächlich mit dem letzten Konto beginnt, das erfolgreich eine Nachricht gesendet hat , oder das Konto mit der niedrigsten Sequenznummer, wenn noch keine Nachricht gesendet wurde.

Die Tatsache, dass es mit dem letzten Konto beginnt, das erfolgreich eine Nachricht gesendet hat, wird in der offiziellen Dokumentation für sysmail_add_profileaccount_sp nicht erwähnt oder sysmail_update_profileaccount_sp .

So oder so, es ist etwas, das Sie beachten sollten, und es kann Sie davor bewahren, sich die Haare zu raufen, wenn Ihre DB Mail Ihre Sequenznummern zu ignorieren scheint.

Speicherort der gespeicherten Prozedur

Beachten Sie, dass die Datei sysmail_update_profileaccount_sp gespeicherte Prozedur befindet sich in der msdb Datenbank und gehört dbo Schema. Daher müssen Sie eine dreiteilige Benennung verwenden, wenn Sie sie von außerhalb der msdb ausführen Datenbank.

So geben Sie Konto- und Profilinformationen zurück

Die folgenden Artikel enthalten Anweisungen zum Zurückgeben von Konto- und Profilinformationen.

  • Erhalten Sie eine Liste der Datenbank-E-Mail-Konten in SQL Server
  • Gibt eine Liste von Datenbank-E-Mail-Profilen in SQL Server zurück