sysmail_add_principalprofile_sp (Transact-SQL)

Gilt für:SQL ServerAzure SQL Managed Instance

Erteilt berechtigungen für einen msdb Datenbankprinzipal, um ein Datenbank-E-Mail Profil zu verwenden. Der Datenbankprinzipal muss einem SQL Server-Authentifizierungsbenutzer, einem Windows-Benutzer oder einer Windows-Gruppe zugeordnet werden.

In Azure SQL verwaltete Instanz und SQL Server 2022 (16.x) kann der Datenbankprinzipal auch einem Microsoft Entra-Benutzer zugeordnet werden.

Transact-SQL-Syntaxkonventionen

Syntax

sysmail_add_principalprofile_sp
    { [ @principal_id = ] principal_id | [ @principal_name = ] 'principal_name' }
    , { [ @profile_id = ] profile_id | [ @profile_name = ] 'profile_name' }
    [ , [ @is_default ] = 'is_default' ]
[ ; ]

Argumente

[ @principal_id = ] principal_id

Die ID des Datenbankbenutzers oder der Datenbankrolle in der msdb Datenbank für die Zuordnung. @principal_id ist int mit einem Standardwert von NULL. Entweder @principal_id oder @principal_name müssen angegeben werden. Ein @principal_id0 dieses Profils zu einem öffentlichen Profil macht, das Zugriff auf alle Prinzipale in der Datenbank gewährt.

[ @principal_name = ] 'principal_name'

Der Name des Datenbankbenutzers oder der Datenbankrolle in der msdb Datenbank für die Zuordnung. @principal_name ist "sysname" mit der Standardeinstellung "NULL. Entweder @principal_id oder @principal_name müssen angegeben werden. Ein @principal_namepublic dieses Profils zu einem öffentlichen Profil macht, das Zugriff auf alle Prinzipale in der Datenbank gewährt.

[ @profile_id = ] profile_id

Die ID des Profils für die Zuordnung. @profile_id ist int, mit einem Standardwert von NULL. Entweder @profile_id oder @profile_name müssen angegeben werden.

[ @profile_name = ] 'profile_name'

Die Name des Profils für die Zuordnung. @profile_name ist "sysname" ohne Standard. Entweder @profile_id oder @profile_name müssen angegeben werden.

[ @is_default = ] is_default

Gibt an, ob dieses Profil das Standardprofil für den Prinzipal ist. Ein Prinzipal muss genau ein Standardprofil haben. @is_default ist bit, ohne Standard.

Rückgabecodewerte

0 (Erfolg) oder 1 (Fehler).

Hinweise

Um ein Profil öffentlich zu machen, geben Sie eine @principal_id oder 0 eine @principal_name von public. Ein öffentliches Profil ist für alle Benutzer in der msdb Datenbank verfügbar, benutzer müssen jedoch auch Mitglied von DatabaseMailUserRole sein, um diese auszuführen sp_send_dbmail.

Ein Datenbankbenutzer kann nur über ein Standardprofil verfügen. Wenn @is_default ist und der Benutzer bereits einem oder mehreren Profilen zugeordnet ist 1 , wird das angegebene Profil zum Standardprofil für den Benutzer. Das zuvor als Standardprofil verwendete Profil ist dem Benutzer weiter zugeordnet, es ist jedoch nicht mehr als Standardprofil festgelegt.

Wenn @is_default vorhanden ist und keine andere Zuordnung vorhanden ist 0 , gibt die gespeicherte Prozedur einen Fehler zurück.

Die gespeicherte Prozedur sysmail_add_principalprofile_sp befindet sich in der msdb Datenbank und gehört dem dbo Schema. Die Prozedur muss mit einem dreiteiligen Namen ausgeführt werden, wenn die aktuelle Datenbank nicht msdbvorhanden ist.

Berechtigungen

Diese gespeicherte Prozedur gehört der db_owner Rolle. Sie können berechtigungen für jeden Benutzer erteilen EXECUTE , diese Berechtigungen können jedoch während eines SQL Server-Upgrades außer Kraft gesetzt werden.

Beispiele

.A Erstellen einer Zuordnung und Festlegen des Standardprofils

Im folgenden Beispiel wird eine Zuordnung zwischen dem Benannten AdventureWorks Administrator Profile Profil und dem msdb Datenbankbenutzer ApplicationUsererstellt. Als Profil wird das Standardprofil des Benutzers verwendet.

EXEC msdb.dbo.sysmail_add_principalprofile_sp
    @principal_name = 'ApplicationUser',
    @profile_name = 'AdventureWorks Administrator Profile',
    @is_default = 1;

B. Festlegen eines Profils als öffentliches Standardprofil

Im folgenden Beispiel wird das Profil AdventureWorks Public Profile als öffentliches Standardprofil für Benutzer in der msdb Datenbank festgelegt.

EXEC msdb.dbo.sysmail_add_principalprofile_sp
    @principal_name = 'public',
    @profile_name = 'AdventureWorks Public Profile',
    @is_default = 1;