共用方式為


Database Mail 組態物件

Database Mail 有兩個組態對象:資料庫組態物件可讓您設定從資料庫應用程式或 SQL Server Agent 傳送電子郵件時,Database mail 應該使用的設定。

  • Database Mail 帳戶

  • Database Mail 設定檔

資料庫郵件配置物件關係

此圖顯示兩個個人資料、三個帳戶和三個使用者。 使用者 1 可以存取個人資料 1,其使用帳戶 1 和帳戶 2。 使用者 3 可以存取個人檔案 2,其使用帳戶 2 和帳戶 3。 使用者 2 可以存取設定檔 1 和設定檔 2。

使用者、配置檔和帳戶的關係

Database Mail 帳戶

Database Mail 帳戶包含MICROSOFT SQL Server 用來將電子郵件訊息傳送至 SMTP 伺服器的資訊。 每個帳戶包含一個電子郵件伺服器的資訊。

Database Mail 支援三種與 SMTP 伺服器通訊的驗證方法:

  • Windows 驗證:Database Mail 會使用 SQL Server Database Engine Windows 服務帳戶的認證,在 SMTP 伺服器上進行驗證。

  • 基本身份驗證:Database Mail 會使用指定的使用者名稱和密碼在 SMTP 伺服器上進行驗證。

  • 匿名驗證:SMTP 伺服器不需要任何驗證。 Database Mail 不會使用任何認證在 SMTP 伺服器上進行驗證。

帳戶資訊會儲存在 msdb 資料庫中。 每個帳戶都包含下列資訊:

  • 帳戶的名稱。

  • 帳戶的描述。

  • 帳戶的電子郵件位址。

  • 帳戶的顯示名稱。

  • 作為帳戶回覆資訊的電子郵件地址。

  • 電子郵件伺服器的名稱。

  • 電子郵件伺服器的型別。 對於 sql Server Microsoft,這一律為 Simple Mail Transfer Protocol(SMTP)。

  • 電子郵件伺服器的埠號碼。

  • 指示是否透過安全套接字層(SSL)連接到 SMTP 郵件伺服器的位元欄。

  • 位數據行,指出是否使用為 SQL Server Database Engine 設定的認證來建立與 SMTP 伺服器的連線。

  • 如果電子郵件伺服器需要驗證,則用來驗證電子郵件伺服器的用戶名稱。

  • 用於驗證電子郵件伺服器的密碼,若電子郵件伺服器需要驗證。

Database Mail 組態精靈提供方便的方式來建立和管理帳戶。 您也可以使用 msdb 中的組態預存程式來建立和管理帳戶。

Database Mail 設定檔

Database Mail 配置檔是相關 Database Mail 帳戶的已排序集合。 使用 Database Mail 傳送電子郵件的應用程式會指定設定檔,而不是直接使用帳戶。 將個別電子郵件伺服器的相關信息與應用程式所使用的物件分開,可改善彈性和可靠性:配置檔提供自動故障轉移,因此,如果一個電子郵件伺服器沒有回應,Database Mail 可以自動將郵件傳送至另一部電子郵件伺服器。 資料庫管理員可以新增、移除或重新設定帳戶,而不需要變更應用程式程式代碼或作業步驟。

配置檔也可協助資料庫管理員控制電子郵件的存取權。 需要 DatabaseMailUserRole 中的成員資格才能傳送 Database Mail。 配置檔為系統管理員提供額外的彈性,以控制誰能發送郵件及使用哪些帳戶。

配置檔可能是公用或私人。

公用配置檔適用於 msdb 資料庫中 DatabaseMailUserRole 資料庫角色的所有成員。 它們允許 DatabaseMailUserRole 角色的所有成員使用電子郵件設定檔傳送電子郵件。

私用配置檔 是針對 msdb 資料庫中的安全性主體所定義。 他們只允許指定的資料庫使用者、角色和 系統管理員 固定伺服器角色的成員使用配置檔傳送電子郵件。 預設情況下,設定檔是私有的,並且只允許存取 系統管理員 固定伺服器角色的成員。 若要使用私人配置檔, 系統管理員 必須授與使用者使用配置檔的許可權。 此外, sp_send_dbmail 預存程式的EXECUTE許可權只會授與 DatabaseMailUserRole的成員。 系統管理員必須將使用者新增至 DatabaseMailUserRole 資料庫角色,使用者才能傳送電子郵件訊息。

設定檔可改善電子郵件伺服器無法連線或無法處理訊息時的可靠性。 配置檔中的每個帳戶都有排序號碼。 序號決定了 Database Mail 使用設定檔中之帳戶的順序。 對於新的電子郵件訊息,Database Mail 會使用最後一個成功傳送郵件的帳戶,或尚未傳送任何訊息時具有最低序號的帳戶。 如果該帳戶失敗,Database Mail 會使用具有下一個最高序號的帳戶,依此方式,直到 Database Mail 成功傳送訊息,或具有最高序號的帳戶失敗為止。 如果具有最高序號的帳戶失敗,Database Mail 會暫停嘗試傳送郵件,以在 sysmail_configure_sp的 AccountRetryDelay 參數中設定的時間量,然後啟動嘗試再次傳送郵件的程式,從最低的序號開始。 使用 sysmail_configure_spAccountRetryAttempts 參數,設定外部郵件進程嘗試使用指定設定檔中的每個帳戶傳送電子郵件訊息的次數。

如果有多個帳戶具有相同序號,Database Mail 只會針對指定的電子郵件訊息使用其中一個帳戶。 在此情況下,Database Mail 不保證會使用哪一個帳戶對應該序號,或是在不同訊息中使用相同的帳戶。

Database Mail 組態工作

下表描述 Database Mail 組態工作。

設定工作 主題連結
描述如何建立Database Mail 帳戶 建立 Database Mail 帳戶
描述如何建立資料庫郵件的設定檔 建立 Database Mail 設定檔
描述如何設定資料庫郵件 設定資料庫郵件
描述如何使用範本建立 Database Mail 組態腳本

其他資料庫設定工作 (系統預存程式)

Database Mail 組態預存程式位於 msdb 資料庫中。

下表列出用來設定和管理 Database Mail 的預存程式。

Database Mail 設定

名稱 說明
sysmail_configure_sp (Transact-SQL) 變更 Database Mail 的組態設定。
sysmail_help_configure_sp (Transact-SQL) 顯示 Database Mail 的組態設定。

帳戶和個人資料

名稱 說明
sysmail_add_profileaccount_sp (Transact-SQL) 將郵件帳戶新增至 Database Mail 設定檔。
sysmail_delete_account_sp (Transact-SQL) 刪除 Database Mail 帳戶。
sysmail_delete_profile_sp (Transact-SQL) 刪除資料庫郵件設定檔。
sysmail_delete_profileaccount_sp (Transact-SQL) 從 Database Mail 設定檔中移除帳戶。
sysmail_help_account_sp (Transact-SQL) 列出 Database Mail 帳戶的相關信息。
sysmail_help_profile_sp (Transact-SQL) 列出一個或多個 Database Mail 設定檔的資訊。
sysmail_help_profileaccount_sp (Transact-SQL) 列出與一或多個 Database Mail 設定檔相關聯的帳戶。
sysmail_update_account_sp (Transact-SQL) 更新現有 Database Mail 帳戶中的資訊。
sysmail_update_profile_sp (Transact-SQL) 可變更 Database Mail 設定檔的敘述或名稱。
sysmail_update_profileaccount_sp (Transact-SQL) 更新 Database Mail 設定檔中的帳戶序列號。

安全

名稱 說明
sysmail_add_principalprofile_sp (Transact-SQL) 授與資料庫主體使用 Database Mail 設定檔的許可權。
sysmail_delete_principalprofile_sp (Transact-SQL) 拿掉資料庫使用者使用公用或私人 Database Mail 設定檔的許可權。
sysmail_help_principalprofile_sp (Transact-SQL) 列出指定資料庫使用者的 Database Mail 設定檔資訊。
sysmail_update_principalprofile_sp (Transact-SQL) 更新指定資料庫用戶的許可權資訊。

系統狀態

名稱 說明
sysmail_start_sp (Transact-SQL) 啟動 Database Mail 外部程式與相關聯的 SQL Service Broker 佇列。
sysmail_stop_sp (Transact-SQL) 停止 Database Mail 外部程式和相關聯的 SQL Service Broker 佇列。
sysmail_help_status_sp (Transact-SQL) 指出是否已啟動Database Mail。

其他參考