適用対象:SQL Server
Azure SQL Managed Instance
データベース構成オブジェクトを使用すると、データベース アプリケーションまたは SQL Server エージェントから電子メールを送信するときにデータベース メールで使用する必要がある設定を構成できます。
ユーザーには、データベース メール プロファイルへのセキュリティで保護されたアクセス権を付与できます。 プロファイルでは、データベース メール アカウントが使用されます。
次の図は、2 つのプロファイル、3 つのアカウント、3 人のユーザーを示しています。 ユーザー 1 には、アカウント 1 とアカウント 2 を使用しているプロファイル 1 へのアクセス権があります。 ユーザー 3 には、アカウント 2 とアカウント 3 を使用しているプロファイル 2 へのアクセス権があります。 ユーザー 2 には、プロファイル 1 とプロファイル 2 の両方へのアクセス権があります。
データベース メール アカウント
データベース メール アカウントには、Microsoft SQL Server から SMTP サーバーへの電子メール メッセージの送信に使用される情報が含まれています。 各アカウントに、1 つの電子メール サーバーの情報が含まれます。
データベース メールでは、SMTP サーバーとの通信に関して、次に示す 3 つの認証方法をサポートしています。
Windows 認証 :データベース メールは、SMTP サーバーの認証に SQL Server データベース エンジン Windows サービス アカウントの資格情報を使用します。
基本認証 : SMTP サーバーの認証用に指定されたユーザー名とパスワードを使用します。
匿名認証 : SMTP サーバーでの認証を要求しません。 SMTP サーバーの認証には資格情報をまったく使用しません。
アカウント情報は、名前、説明、電子メール アドレス、返信メール、電子メール サーバー、サーバーの認証情報など、 msdb
システム データベースに格納されます。
データベース メール構成ウィザードでは、アカウントを作成および管理するための便利な方法が提供されます。 また、msdb
の構成ストアド プロシージャを使用して、アカウントを作成および管理することもできます。
データベース メール プロファイル
データベース メール プロファイルとは、関連のあるデータベース メール アカウントに順序を付けたコレクションです。 データベース メールを使用して電子メールを送信するアプリケーションでは、アカウントを直接使用するのではなく、プロファイルを指定します。
アプリケーションが使用するオブジェクトから個別の電子メール サーバーに関する情報を分離することで、柔軟性や信頼性が向上します。つまり、プロファイルにより自動フェールオーバーが提供されるので、ある電子メール サーバーが応答していない場合に、データベース メールによって別の電子メール サーバーに自動的にメールが送信されます。 データベース管理者は、アプリケーション コードまたはジョブ ステップを変更する必要なく、アカウントの追加、削除、または再構成を行うことができます。
プロファイルはデータベース管理者が電子メールへのアクセスを制御するうえでも役立ちます。 データベース メールを送信するには DatabaseMailUserRole のメンバーシップが必要です。 プロファイルを使用すると、メールを送信するユーザーおよび使用するアカウントを管理者が柔軟にコントロールできます。
プロファイルは、パブリックまたはプライベートにすることができます。 既定では、プロファイルはプライベートで、 sysadmin 固定サーバー ロールのメンバーのみがアクセスできます。
パブリック プロファイルは、 システム データベースの
msdb
データベース ロールのすべてのメンバーで使用できます。 DatabaseMailUserRole ロールのすべてのメンバーは、このプロファイルを使用して電子メールを送信できます。プライベート プロファイル は、
msdb
データベースのセキュリティ プリンシパル用に定義されます。 指定したデータベース ユーザー、ロール、および sysadmin 固定サーバー ロールのメンバーのみ、このプロファイルを使用して電子メールを送信できます。 プライベート プロファイルを使用するには、 sysadmin が、プライベート プロファイルを使用するための権限をユーザーに与える必要があります。 さらに、sp_send_dbmail
ストアド プロシージャに対する EXECUTE 権限は、 DatabaseMailUserRole のメンバーにのみ付与されます。 ユーザーが電子メール メッセージを送信できるようにするには、システム管理者がユーザーを DatabaseMailUserRole データベース ロールに追加する必要があります。
プロファイルのシーケンス番号
プロファイルを使用すると、電子メール サーバーへのメッセージ配信や電子メール サーバーでのメッセージ処理ができなくなった場合の信頼性が高まります。 プロファイル内のアカウントには、通し番号が付けられます。 シーケンス番号によって、データベース メールではプロファイル内のアカウントがどの順番で使用されるかが決まります。
新しい電子メール メッセージが作成されると、メッセージを正常に送信した最後のアカウントが使用されます。ただしその時点で正常に送信されたメッセージが 1 通もない場合は、最も番号が小さいアカウントが使用されます。 そのアカウントが失敗すると、データベース メールでは、このアカウントよりも大きいシーケンス番号を持つアカウントに処理が移ります。このように、データベース メールによってメッセージが正常に送信されるか、一番大きなシーケンス番号のアカウントが失敗するまで順に処理されます。 最も番号が大きいアカウントで失敗した場合、 sysmail_configure_sp の AccountRetryDelayパラメーターで構成した時間、メールの送信が一時停止されます。その後、最も番号が小さいアカウントからメールの送信プロセスが再開されます。
AccountRetryAttempts
の sysmail_configure_sp
パラメーターを使用して、外部メール プロセスが指定したプロファイルの各アカウントを使用して電子メール メッセージの送信を試行する回数を構成します。
同じシーケンス番号を持つアカウントが複数存在する場合、データベース メールでは、指定された電子メール メッセージに対して、これらのアカウントのいずれか 1 つのみが使用されます。 この場合、そのシーケンス番号に対してどのアカウントが使用されるか、またメッセージごとに同じアカウントが使用されるかついては、データベース メールでは保証されません。
データベース メールの構成タスク
データベース メールの構成タスクを次の表に示します。
構成タスク | トピック |
---|---|
データベース メール アカウントの作成方法について説明します。 | データベース メール アカウントの作成 |
データベース メール プロファイルの作成方法について説明します。 | データベース メール プロファイルの作成 |
データベース メールの構成方法について説明します。 | データベース メールを構成する |
追加のデータベース構成タスク (システム ストアド プロシージャ)
データベース メール構成のストアド プロシージャは、msdb
データベースにあります。
次の表は、データベース メールの構成および管理に使用するストアド プロシージャを示しています。
データベース メールの設定
名前 | 説明 |
---|---|
sysmail_configure_sp (Transact-SQL) | データベース メールの構成設定を変更します。 |
sysmail_help_configure_sp (Transact-SQL) | データベース メールの構成設定を表示します。 |
アカウントとプロファイル
名前 | 説明 |
---|---|
sysmail_add_profileaccount_sp (Transact-SQL) | データベース メール プロファイルにメール アカウントを追加します。 |
sysmail_delete_account_sp (Transact-SQL) | データベース メール アカウントを削除します。 |
sysmail_delete_profile_sp (Transact-SQL) | データベース メール プロファイルを削除します。 |
sysmail_delete_profileaccount_sp (Transact-SQL) | データベース メール プロファイルからアカウントを削除します。 |
sysmail_help_account_sp (Transact-SQL) | データベース メール アカウントに関する情報を一覧表示します。 |
sysmail_help_profile_sp (Transact-SQL) | 1 つ以上のデータベース メール プロファイルに関する情報を一覧表示します。 |
sysmail_help_profileaccount_sp (Transact-SQL) | 1 つ以上のデータベース メール プロファイルに関連付けられているアカウントを一覧表示します。 |
sysmail_update_account_sp (Transact-SQL) | 既存のデータベース メール アカウントの情報を更新します。 |
sysmail_update_profile_sp (Transact-SQL) | データベース メール プロファイルの説明または名前を変更します。 |
sysmail_update_profileaccount_sp (Transact-SQL) | データベース メール プロファイル内のアカウントのシーケンス番号を更新します。 |
安全
名前 | 説明 |
---|---|
sysmail_add_principalprofile_sp (Transact-SQL) | データベース プリンシパルがデータベース メール プロファイルを使用するための権限を許可します。 |
sysmail_delete_principalprofile_sp (Transact-SQL) | データベース ユーザーがパブリックまたはプライベートのデータベース メール プロファイルを使用するための権限を削除します。 |
sysmail_help_principalprofile_sp (Transact-SQL) | 特定のデータベース ユーザーのデータベース メール プロファイル情報を一覧表示します。 |
sysmail_update_principalprofile_sp (Transact-SQL) | 特定のデータベース ユーザーの権限情報を更新します。 |
システム状態
名前 | 説明 |
---|---|
sysmail_start_sp (Transact-SQL) | データベース メール外部プログラムおよび関連付けられている SQL Service Broker のキューを開始します。 |
sysmail_stop_sp (Transact-SQL) | データベース メール外部プログラムおよび関連付けられている SQL Service Broker のキューを停止します。 |
sysmail_help_status_sp (Transact-SQL) | データベース メールが開始されているかどうかを示します。 |