データベース メール

データベース メールは、SQL Server データベース エンジンから電子メール メッセージを送信するためのエンタープライズ ソリューションです。 データベース メールを使用すると、データベース アプリケーションからユーザーに電子メールを送信できます。 メッセージにはクエリ結果を含めることができ、ネットワーク上にあるリソースのファイルも含めることができます。

データベース メールの使用の利点

データベース メールは、信頼性、スケーラビリティ、セキュリティ、およびサポート性を念頭に置いて設計されています。

[信頼性]

  • データベース メールでは、標準的な簡易メール転送プロトコル (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の外部からのアクセスを縮小するために、データベース メールのストアド プロシージャは既定で無効になっています。

  • メールのセキュリティ: データベース メールを送信するには、 msdb データベースの DatabaseMailUserRole データベース ロールのメンバーである必要があります。

  • プロファイルのセキュリティ: データベース メールでは、メール プロファイルにセキュリティが適用されます。 データベース メール プロファイルにアクセスする msdb データベース ユーザーまたはグループを選択することによって、 特定のユーザーまたは msdbのすべてのユーザーにアクセスを許可できます。 プライベート プロファイルでは、指定した一覧のユーザーにアクセスが制限されます。 パブリック プロファイルは、データベースのすべてのユーザーがアクセスできます。

  • 添付ファイル サイズ ガバナー: データベース メールでは、添付ファイル サイズの制限を構成できます。 この制限は、 sysmail_configure_sp ストアド プロシージャを使用して変更できます。

  • 禁止するファイル拡張子: データベース メールでは、禁止するファイル拡張子の一覧が保持されます。 ユーザーは、一覧に含まれている拡張子を持つファイルを添付できません。 この一覧は、sysmail_configure_sp を使用して変更できます。

  • データベース メールは、 SQL Server エンジン サービス アカウントで実行されます。 フォルダー内のファイルを電子メールに添付するには、 SQL Server エンジンのアカウントに、対象ファイルのあるフォルダーへのアクセス権限が必要です。

サポート

  • 統合構成: データベース メールは、Transact-SQL 内の電子メール アカウントの情報を保持します。

  • ログ記録。 電子メールの利用状況は、 SQL Server、Microsoft Windows アプリケーション イベント ログ、および msdb データベースのテーブルに記録されます。

  • 監査: データベース メールでは、送信したメッセージおよび添付ファイルのコピーが msdb データベースに保存されます。 データベース メールの利用状況の監査や、保存されているメッセージの確認を簡単に行うことができます。

  • HTML のサポート: データベース メールを使用すると、HTML 形式の電子メールを送信できます。

データベース メールのアーキテクチャ

データベース メールは、Service Broker テクノロジを使用するキュー アーキテクチャを基に設計されています。 ユーザーが sp_send_dbmailを実行すると、アイテムがメール キューに挿入され、電子メール メッセージを格納したレコードが作成されます。 メール キューに新しいエントリが挿入されると、データベース メールの外部プロセス (DatabaseMail.exe) が起動します。 外部プロセスは、電子メール情報を読み取り、電子メール メッセージを適切な電子メール サーバーに送信します。 また、送信操作の結果の状態キューにアイテムを挿入します。 状態キューに新しいエントリが挿入されると、電子メール メッセージの状態を更新する内部ストアド プロシージャが起動します。 データベース メールは、システム テーブルに送信済み (または未送信) の電子メール メッセージを格納するだけでなく、電子メールの添付ファイルも記録します。 データベース メール ビューには、トラブルシューティングのためにメッセージの状態が表示されます。また、ストアド プロシージャにより、データベース メール キューの管理が可能になります。

msdb が SMTP メール サーバーにメッセージを送信する

データベース メールのコンポーネントの概要

データベース メールは次に示す主要なコンポーネントで構成されています。

  • 構成およびセキュリティ関連コンポーネント

    データベース メールは、 msdb データベースに構成情報とセキュリティ情報を格納します。 構成オブジェクトおよびセキュリティ オブジェクトは、データベース メールで使用されるプロファイルおよびアカウントを作成します。

  • メッセージング関連コンポーネント

    msdb データベースは、データベース メールでの電子メール送信に使用されるメッセージング オブジェクトを保持するメール ホスト データベースとして機能します。 これらのオブジェクトには、 sp_send_dbmail ストアド プロシージャと、メッセージに関する情報を格納するデータ構造が含まれています。

  • データベース メール実行可能ファイル

    データベース メール実行可能ファイルは、 msdb データベース内のキューからメッセージを読み取り、電子メール サーバーにメッセージを送信する外部プログラムです。

  • ログおよび監査関連コンポーネント

    データベース メールは、 msdb データベースおよび Microsoft Windows アプリケーション イベント ログにログ情報を記録します。

データベース メールを使用するためのエージェントの構成:

SQL Server エージェントは、データベース メールを使用するように構成できます。 警告通知およびジョブ完了時の自動通知には、この構成が必要です。

警告

また、ジョブ内の個別のジョブ ステップでは、データベース メールを使用するように SQL Server エージェントを構成しなくても、電子メールを送信できます。 たとえば、Transact-SQL ジョブ ステップでは、データベース メールを使用して、クエリの結果を受信者の一覧に送信できます。

SQL Server エージェントを構成して、次のような場合に電子メール メッセージが指定のオペレーターに送信されるように設定できます。

  • 警告が発生した場合。 特定のイベントが発生したときに電子メールによる通知を送信するように警告を構成できます。 たとえば、すぐに対処しなければならない可能性がある特定のデータベース イベントまたはオペレーティング システムの状態がオペレーターに通知されるように、警告を構成できます。 警告の構成の詳細については、「 警告」を参照してください。

  • データベースのバックアップやレプリケーション イベントなどの定期タスクが成功または失敗したとき。 たとえば、SQL Server エージェント メールを使用して、月末に実行する処理でエラーが発生した場合にオペレーターに通知できます。

データベース メールのコンポーネントのトピック