sysmail_add_principalprofile_sp (Transact-SQL)

適用対象: SQL ServerAzure SQL Managed Instance

データベース メール プロファイルをmsdb使用するためのデータベース プリンシパルのアクセス許可を付与します。 データベース プリンシパルは、SQL Server 認証ユーザー、Windows ユーザー、または Windows グループにマップする必要があります。

Azure SQL Managed Instance と SQL Server 2022 (16.x) では、データベース プリンシパルを Microsoft Entra ユーザーにマップすることもできます。

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 データベース ユーザーまたはロールの ID。 @principal_idは int で、既定値は NULL. @principal_idまたは@principal_name指定する必要があります。 @principal_id0は、このプロファイルをパブリック プロファイルにし、データベース内のすべてのプリンシパルへのアクセスを許可します。

[ @principal_name = ] 'principal_name'

関連付けのデータベース内の msdb データベース ユーザーまたはロールの名前。 @principal_nameは sysname で、既定値は NULL. @principal_idまたは@principal_name指定する必要があります。 @principal_namepublicは、このプロファイルをパブリック プロファイルにし、データベース内のすべてのプリンシパルへのアクセスを許可します。

[ @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または@principal_namepublic指定します。 パブリック プロファイルはデータベース内msdbのすべてのユーザーが使用できますが、実行するにはユーザーも DatabaseMailUserRolesp_send_dbmailメンバーである必要があります。

データベース ユーザーは、既定のプロファイルを 1 つだけ持つことができます。 @is_default1 1 つ以上のプロファイルに既に関連付けられている場合、指定したプロファイルがユーザーの既定のプロファイルになります。 それまで既定のプロファイルであったプロファイルは、引き続きこのユーザーに関連付けられますが、既定のプロファイルではなくなります。

@is_default0存在し、他の関連付けが存在しない場合、ストアド プロシージャはエラーを返します。

ストアド プロシージャ 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;