データベース メール
適用対象: SQL Server Azure SQL Managed Instance
データベース メールは、SQL Server データベース エンジン または Azure SQL Managed Instance から電子メール メッセージを送信するためのエンタープライズ ソリューションです。 アプリケーションは、外部 SMTP サーバー経由でデータベース メールを使用してユーザーに電子メール メッセージを送信できます。 メッセージにはクエリ結果を含めることができ、ネットワーク上にあるリソースのファイルも含めることができます。
注意
データベース メールは、SQL Server データベース エンジンとAzure SQL Managed Instanceで使用できますが、Azure SQLデータベース シングルトンプールとエラスティック プールでは使用できません。 Azure SQL Managed Instanceでデータベース メールを使用する方法の詳細については、「Azure SQL Managed Instanceで SQL エージェント ジョブを使用して管理タスクを自動化する」を参照してください。
データベース メールの使用の利点
データベース メールは、信頼性、スケーラビリティ、セキュリティ、およびサポート性を念頭に置いて設計されています。
[信頼性]
データベース メールでは、標準的な簡易メール転送プロトコル (SMTP) を使用してメールを送信します。 SQL Serverを実行するコンピューターに拡張 MAPI クライアントをインストールしなくても、データベース メールを使用できます。
プロセスの分離。 SQL Serverへの影響を最小限にするために、電子メールを配信するコンポーネントは SQL Server外部の別個のプロセスで実行されます。 SQL Server は、外部プロセスが停止または失敗しても、電子メールのキューを続行します。 キューに登録されたメッセージは、外部プロセスまたは SMTP サーバーがオンラインになると送信されます。
フェールオーバー アカウント。 データベース メール プロファイルを使用すると、複数の SMTP サーバーを指定できます。 ある SMTP サーバーが使用できない場合は、別の SMTP サーバーにメールを配信できます。
クラスター サポート。 データベース メールはクラスターに対応しており、クラスターで完全にサポートされています。
スケーラビリティ
バックグラウンド配信: データベース メールでは、バックグラウンド配信または非同期配信が提供されています。 を呼び出
sp_send_dbmail
してメッセージを送信すると、データベース メールは Service Broker キューに要求を追加します。 ストアド プロシージャが直ちに返されます。 外部の電子メール コンポーネントが要求を受信し、電子メールを配信します。複数のプロファイル: データベース メールを使用すると、 SQL Server インスタンス内に複数のプロファイルを作成できます。 オプションで、メッセージを送信するときにデータベース メールが使用するプロファイルを選択できます。
複数のアカウント: 各プロファイルに、複数のフェールオーバー アカウントを含めることができます。 別々のアカウントを持つ別々のプロファイルを構成して、複数の電子メール サーバーで電子メールを配信できます。
64 ビット互換性: データベース メールは、 SQL Serverの 64 ビット インストールで完全にサポートされています。
Security
既定でオフ: SQL Serverの外部からのアクセスを縮小するために、データベース メールのストアド プロシージャは既定で無効になっています。
Mail Security:データベース メールを送信するには、データベースの DatabaseMailUserRole データベース ロールの
msdb
メンバーである必要があります。プロファイルのセキュリティ: データベース メールでは、メール プロファイルにセキュリティが適用されます。 データベース メール プロファイルにアクセスできるデータベース ユーザーまたはグループを選択
msdb
します。 の特定のユーザーまたはすべてのユーザーmsdb
にアクセス権を付与できます。 プライベート プロファイルでは、指定した一覧のユーザーにアクセスが制限されます。 パブリック プロファイルは、データベースのすべてのユーザーがアクセスできます。添付ファイル サイズ ガバナー: データベース メールでは、添付ファイル サイズの制限を構成できます。 この制限は、 sysmail_configure_sp ストアド プロシージャを使用して変更できます。
禁止するファイル拡張子: データベース メールでは、禁止するファイル拡張子の一覧が保持されます。 ユーザーは、一覧に含まれている拡張子を持つファイルを添付できません。 この一覧は、sysmail_configure_sp を使用して変更できます。
データベース メールは、 SQL Server エンジン サービス アカウントで実行されます。 フォルダー内のファイルを電子メールに添付するには、 SQL Server エンジンのアカウントに、対象ファイルのあるフォルダーへのアクセス権限が必要です。
サポート
統合された構成: データベース メールでは、電子メール アカウントの情報が SQL Server データベース エンジンに保存されます。 外部クライアント アプリケーションでメール プロファイルを管理する必要はありません。 データベース メール構成ウィザードでは、データベース メールを構成するための便利なインターフェイスが提供されています。 Transact-SQL を使用してデータベース メール構成を作成および管理することもできます。
ログ記録。 データベース メールは、電子メール アクティビティをSQL Server、Microsoft Windows アプリケーション イベント ログ、およびデータベース内のテーブルに
msdb
記録します。監査: データベース メールは、データベースに送信されたメッセージと添付ファイルのコピーを
msdb
保持します。 データベース メールの利用状況の監査や、保存されているメッセージの確認を簡単に行うことができます。HTML のサポート: データベース メールを使用すると、HTML 形式の電子メールを送信できます。
データベース メールのアーキテクチャ
データベース メールは、Service Broker テクノロジを使用するキュー アーキテクチャを基に設計されています。 ユーザーが を実行 sp_send_dbmail
すると、ストアド プロシージャはアイテムをメール キューに挿入し、電子メール メッセージを含むレコードを作成します。 メール キューに新しいエントリが挿入されると、データベース メールの外部プロセス (DatabaseMail.exe) が起動します。 外部プロセスは、電子メール情報を読み取り、電子メール メッセージを適切な電子メール サーバーに送信します。 また、送信操作の結果の状態キューにアイテムを挿入します。 状態キューに新しいエントリが挿入されると、電子メール メッセージの状態を更新する内部ストアド プロシージャが起動します。 データベース メールは、システム テーブルに送信済み (または未送信) の電子メール メッセージを格納するだけでなく、電子メールの添付ファイルも記録します。 データベース メール ビューには、トラブルシューティングのためにメッセージの状態が表示されます。また、ストアド プロシージャにより、データベース メール キューの管理が可能になります。
データベース メール コンポーネントの概要
データベース メールは次に示す主要なコンポーネントで構成されています。
構成およびセキュリティ関連コンポーネント
データベース メールは、構成とセキュリティの情報をデータベースに
msdb
格納します。 構成オブジェクトおよびセキュリティ オブジェクトは、データベース メールで使用されるプロファイルおよびアカウントを作成します。メッセージング関連コンポーネント
データベースは
msdb
、電子メールの送信に使用データベース メールメッセージング オブジェクトを保持するメール ホスト データベースとして機能します。 これらのオブジェクトには、sp_send_dbmail
ストアド プロシージャと、メッセージに関する情報を保持するデータ構造が含まれます。データベース メール実行可能ファイル
データベース メール実行可能ファイルは、データベース内のキューから読み取り、
msdb
電子メール サーバーにメッセージを送信する外部プログラムです。ログおよび監査関連コンポーネント
データベース メールは、データベースと Microsoft Windows アプリケーション イベント ログに
msdb
ログ情報を記録します。
データベース メールを使用するように SQL エージェントを構成する
SQL Server エージェントは、データベース メールを使用するように構成できます。 警告通知およびジョブ完了時の自動通知には、この構成が必要です。
警告
また、ジョブ内の個別のジョブ ステップでは、データベース メールを使用するように SQL Server エージェントを構成しなくても、電子メールを送信できます。 たとえば、Transact-SQL ジョブ ステップでは、データベース メールを使用して、クエリの結果を受信者の一覧に送信できます。
SQL Server エージェントを構成して、次のような場合に電子メール メッセージが指定のオペレーターに送信されるように設定できます。
警告が発生した場合。 特定のイベントが発生したときに電子メールによる通知を送信するように警告を構成できます。 たとえば、すぐに対処しなければならない可能性がある特定のデータベース イベントまたはオペレーティング システムの状態がオペレーターに通知されるように、警告を構成できます。 警告の構成の詳細については、「 警告」を参照してください。
データベースのバックアップやレプリケーション イベントなどの定期タスクが成功または失敗したとき。 たとえば、SQL Server エージェント メールを使用して、月末に実行する処理でエラーが発生した場合にオペレーターに通知できます。