sysmail_add_principalprofile_sp (Transact-SQL)
適用対象: SQL Server Azure SQL Managed Instance
msdb
データベース プリンシパルに対して、データベース メール プロファイルを使用するためのアクセス許可を付与します。 データベース プリンシパルは、SQL Server 認証ユーザー、Windows ユーザー、または Windows グループにマップする必要があります。
Azure SQL Managed Instance と SQL Server 2022 (16.x) では、データベース プリンシパルを Microsoft Entra ユーザーにマップすることもできます。
構文
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
データベースのデータベース ユーザーまたはロールの ID。 @principal_id は int で、既定値は NULL
です。 @principal_idまたは@principal_nameを指定する必要があります。 0
の@principal_idにより、このプロファイルがパブリック プロファイルになり、データベース内のすべてのプリンシパルへのアクセスが許可されます。
[ @principal_name = ] 'principal_name'
関連付けの msdb
データベース内のデータベース ユーザーまたはロールの名前。 @principal_name は sysname で、既定値は NULL
です。 @principal_idまたは@principal_nameを指定する必要があります。 public
の@principal_nameにより、このプロファイルがパブリック プロファイルになり、データベース内のすべてのプリンシパルへのアクセスが許可されます。
[ @profile_id = ] profile_id
関連付けのプロファイルの ID。 @profile_id は int で、既定値は NULL
です。 @profile_idまたは@profile_nameを指定する必要があります。
[ @profile_name = ] 'profile_name'
関連付けのプロファイルの名前。 @profile_name は sysname で、既定値はありません。 @profile_idまたは@profile_nameを指定する必要があります。
[ @is_default = ] is_default
このプロファイルをプリンシパルの既定のプロファイルとするかどうかを指定します。 プリンシパルには、既定のプロファイルが 1 つだけ必要です。 @is_default は ビットで、既定値はありません。
リターン コードの値
0
(成功) または 1
(失敗)。
解説
プロファイルをパブリックにするには、0
の@principal_idまたはpublic
の@principal_nameを指定します。 パブリック プロファイルは、msdb
データベース内のすべてのユーザーが使用できますが、sp_send_dbmail
を実行するには、DatabaseMailUserRole のメンバーである必要もあります。
データベース ユーザーは、既定のプロファイルを 1 つだけ持つことができます。 @is_defaultが1
され、ユーザーが既に 1 つ以上のプロファイルに関連付けられている場合、指定されたプロファイルがユーザーの既定のプロファイルになります。 それまで既定のプロファイルであったプロファイルは、引き続きこのユーザーに関連付けられますが、既定のプロファイルではなくなります。
@is_defaultが0
され、他の関連付けが存在しない場合、ストアド プロシージャはエラーを返します。
ストアド プロシージャ sysmail_add_principalprofile_sp
は msdb
データベースにあり、 dbo
スキーマによって所有されています。 現在のデータベースが msdb
されていない場合は、プロシージャを 3 部構成の名前で実行する必要があります。
アクセス許可
このストアド プロシージャは、 db_owner ロールによって所有されています。 EXECUTE
アクセス許可は任意のユーザーに付与できますが、SQL Server のアップグレード中にこれらのアクセス許可がオーバーライドされる可能性があります。
例
A. 関連付けを作成し、既定のプロファイルを設定する
次の例では、 AdventureWorks Administrator Profile
という名前のプロファイルと、 msdb
データベース ユーザー ApplicationUser
との間に関連付けを作成します。 プロファイルは、ユーザーの既定のプロファイルです。
EXEC msdb.dbo.sysmail_add_principalprofile_sp
@principal_name = 'ApplicationUser',
@profile_name = 'AdventureWorks Administrator Profile',
@is_default = 1;
B. プロファイルを既定のパブリック プロファイルにする
次の例では、プロファイルAdventureWorks Public Profile
msdb
データベース内のユーザーの既定のパブリック プロファイルにします。
EXEC msdb.dbo.sysmail_add_principalprofile_sp
@principal_name = 'public',
@profile_name = 'AdventureWorks Public Profile',
@is_default = 1;