データベース メールのアーキテクチャ
データベース メールは次に示す主要なコンポーネントで構成されています。
構成およびセキュリティ関連コンポーネント
データベース メールは、msdb データベースに構成情報とセキュリティ情報を格納します。構成オブジェクトおよびセキュリティ オブジェクトは、データベース メールで使用されるプロファイルおよびアカウントを作成します。
メッセージング関連コンポーネント
msdb データベースは、データベース メールでの電子メール送信に使用されるメッセージング オブジェクトを保持するメール ホスト データベースとして機能します。これらのオブジェクトには、sp_send_dbmail ストアド プロシージャと、メッセージに関する情報を格納するデータ構造が含まれています。
データベース メール実行可能ファイル
データベース メール実行可能ファイルは、msdb データベース内のキューからメッセージを読み取り、電子メール サーバーにメッセージを送信する外部プログラムです。
ログおよび監査関連コンポーネント
データベース メールは、msdb データベースおよび Microsoft Windows アプリケーション イベント ログにログ情報を記録します。
データベース メールは、アーキテクチャを完全に理解しなくても、効果的に使用できます。ただし、データベース メールを構成しているコンポーネントとそれらのコンポーネントの持つ影響を理解しておくと、アプリケーションのデザインや発生する可能性がある問題のトラブルシューティングに役立つ場合があります。
次の図は、データベース メールのアーキテクチャの概要を表しています。
データベース メールは、Service Broker テクノロジを使用するキュー アーキテクチャを基に設計されています。ユーザーが sp_send_dbmail を実行すると、アイテムがメール キューに挿入され、電子メール メッセージを格納したレコードが作成されます。メール キューに新しいエントリが挿入されると、データベース メールの外部プロセス (DatabaseMail.exe) が起動します。外部プロセスは、電子メール情報を読み取り、電子メール メッセージを適切な電子メール サーバーに送信します。また、送信操作の結果の状態キューにアイテムを挿入します。状態キューに新しいエントリが挿入されると、電子メール メッセージの状態を更新する内部ストアド プロシージャが起動します。データベース メールは、システム テーブルに送信済み (または未送信) の電子メール メッセージを格納するだけでなく、電子メールの添付ファイルも記録します。データベース メール ビューには、トラブルシューティングのためにメッセージの状態が表示されます。また、ストアド プロシージャにより、データベース メール キューの管理が可能になります。
sp_send_dbmail を実行できるのは、msdb データベース内の DatabaseMailUserRole のメンバのみです。