sysmail_add_principalprofile_sp (Transact-SQL)

Предоставляет пользователю или роли базы данных разрешение на использование профиля компонента Database Mail.

Значок ссылки на разделСинтаксические обозначения в Transact-SQL

Синтаксис

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

Аргументы

  • [ @principal_id = ] principal_id
    Идентификатор пользователя или роли в базе данных msdb, с которыми следует ассоциировать профиль. Аргумент principal_id имеет тип int и значение по умолчанию NULL. При вызове процедуры нужно указать или аргумент principal_id, или principal_name. Если значение аргумента principal_id равно 0, профиль становится открытым и доступ к нему предоставляется всем участникам базы данных.

  • [ @principal_name = ] 'principal_name'
    Имя пользователя или роли в базе данных msdb, с которыми следует ассоциировать профиль. Этот аргумент principal_name имеет тип sysname и значение по умолчанию NULL. При вызове процедуры нужно указать или аргумент principal_id, или principal_name. Если principal_name имеет значение 'public', профиль становится открытым и доступ к нему предоставляется всем участникам базы данных.

  • [ @profile_id = ] profile_id
    Идентификатор профиля, который следует ассоциировать с пользователем или ролью базы данных. Этот аргумент profile_id имеет тип int и значение по умолчанию NULL. При вызове процедуры нужно указать или аргумент profile_id, или profile_name.

  • [ @profile_name = ] 'profile_name'
    Название профиля, который следует ассоциировать с пользователем или ролью базы данных. Этот аргумент profile_name имеет тип sysname и не имеет значения по умолчанию. При вызове процедуры нужно указать или аргумент profile_id, или profile_name.

  • [ @is_default = ] is_default
    Этот аргумент показывает, является ли данный профиль для участника профилем по умолчанию. Участник должен иметь ровно один профиль по умолчанию. Данный аргумент is_default имеет тип bit и не имеет значения по умолчанию.

Значения кодов возврата

0 (успешное завершение) или 1 (неуспешное завершение)

Замечания

Чтобы сделать профиль открытым, следует указать аргумент @principal_id равным 0 или аргумент @principal_name со значением public. Открытый профиль доступен всем пользователям базы данных msdb, хотя для выполнения процедуры sp_send_dbmail они должны быть также членами роли DatabaseMailUserRole.

Пользователь базы данных может иметь только один профиль по умолчанию. Если аргумент @is_default равен 1, а пользователь уже ассоциирован с одним или несколькими профилями, то указанный при вызове процедуры профиль становится для пользователя профилем по умолчанию. Профиль, который ранее был профилем по умолчанию, остается ассоциированным с пользователем, но уже не является профилем по умолчанию.

Если аргумент @is_default равен 0 и никаких других ассоциаций нет, хранимая процедура возвращает ошибку.

Хранимая процедура sysmail_add_principalprofile_sp находится в базе данных msdb и принадлежит схеме dbo. Если текущей базой данных является не msdb, процедуру следует выполнять с трехкомпонентным именем.

Разрешения

По умолчанию разрешения на выполнение этой процедуры имеют члены предопределенной роли сервера sysadmin.

Примеры

А. Создание ассоциации с профилем, определение профиля по умолчанию

Следующий пример ассоциирует профиль AdventureWorks2008R2 Administrator Profile с пользователем базы данных msdb, имеющим имя ApplicationUser. Указанный профиль становится для пользователя профилем по умолчанию.

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

Б. Определение открытого профиля по умолчанию

Следующий пример делает профиль AdventureWorks2008R2 Public Profile открытым профилем по умолчанию для пользователей базы данных msdb.

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