SQL Serverでデータベースメールを使用して電子メールを送信するには、ユーザーは DatabaseMailUserRoleのメンバーである必要があります msdbで データベースであり、少なくとも1つのデータベースメールプロファイルにアクセスできます。
T-SQLを使用してデータベースメールプロファイルへのアクセスをユーザーに許可するには、sysmail_add_principalprofile_sp
を使用します msdb
のストアドプロシージャ データベース。
例
実例を示します。
EXECUTE msdb.dbo.sysmail_add_principalprofile_sp
@profile_name = 'DB Admin Profile',
@principal_name = 'Marge',
@is_default = 1;
この場合、ユーザーにプロファイル「DB管理者プロファイル」への「マージ」アクセスを許可します。
これは、プロファイルとユーザーがすでに存在していることを前提としています。
この場合、@is_default = 1
も指定しました 、これがユーザーのデフォルトプロファイルになります。
ユーザー/プロファイルIDを指定する
または、名前の代わりにユーザーIDやアカウントIDを指定することもできます。
したがって、前の例を次のように変更できます。
EXECUTE msdb.dbo.sysmail_add_principalprofile_sp
@profile_id = 1,
@principal_id = 25,
@is_default = 1;
これは明らかに、それらが問題のアカウントのIDであることを前提としています。
名前またはIDのいずれかを指定する必要があることに注意してください。
また、IDを提供する場合、IDは intとして提供されます。 。
sysmail_add_principalprofile_sp
に注意してください ストアドプロシージャはmsdb
にあります データベースであり、dbo
が所有しています スキーマ。したがって、msdb
の外部から実行する場合は、3つの部分からなる命名を使用する必要があります。 データベース。
公開プロフィール
msdb で、プロファイルをユーザーのデフォルトのパブリックプロファイルにすることもできます。 データベース。
EXECUTE msdb.dbo.sysmail_add_principalprofile_sp
@profile_name = 'DB Public Profile',
@principal_name = 'public',
@is_default = 1;
プロファイルを公開するには、@principal_id
を指定します 0
の または@principal_name
public
の 。 msdbのすべてのユーザーが公開プロファイルを利用できます データベース(ただし、ユーザーは DatabaseMailUserRoleのメンバーでもある必要があります sp_send_dbmail
を実行します 。
デフォルトのパブリックプロファイルは1つだけであることに注意してください。
データベースメールの設定
上記の手順は、データベースメールプロファイルをすでに作成し、そのプロファイルに少なくとも1つのデータベースメールアカウントを追加していることを前提としています。
データベースメールを構成してから電子メールを送信する完全な例については、SQLServerで電子メールを送信する方法を参照してください。