共用方式為


Database Mail 組態物件

適用於:SQL ServerAzure SQL 受控執行個體

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

用戶可以獲得Database Mail 設定檔的安全存取權。 配置檔案使用 Database Mail 帳戶。

<>

下圖顯示兩個配置檔、三個帳戶和三個使用者。 「使用者 1」有「設定檔 1」的存取權,前者使用「帳戶 1」及「帳戶 2」。 「使用者 3」有「設定檔 2」的存取權,而「設定檔 2」使用「帳戶 3」及「帳戶 3」。 「使用者 2」有「設定檔 1」及「設定檔 2」的存取權。

Database Mail 中使用者、配置檔和帳戶關聯性的圖例。

Database Mail 帳戶

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

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

  • Windows 驗證:Database Mail 使用 SQL Server 資料庫引擎 Windows 服務帳戶的認證進行 SMTP 伺服器驗證。

  • 基本驗證:Database Mail 使用指定的使用者名稱與密碼來進行 SMTP 伺服器驗證。

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

帳戶資訊會儲存在 msdb 系統資料庫中,包括名稱、描述、電子郵件地址、回復電子郵件、電子郵件伺服器和伺服器驗證資訊。

「Database Mail 組態精靈」提供一個便捷的方式來建立及管理帳戶。 您也可以使用 msdb 中的組態預存程序來建立及管理帳戶。

Database Mail 設定檔

Database Mail 設定檔是相關 Database Mail 帳戶的排序集合。 使用 Database Mail 傳送電子郵件的應用程式會指定設定檔,而不是直接使用帳戶。

將個別電子郵件伺服器的資訊與應用程式所使用的物件區隔開來,可以增進彈性及可靠性:設定檔會提供自動容錯移轉功能,所以如果有一部電子郵件伺服器沒有回應,Database Mail 就會自動將郵件傳送至另一部電子郵件伺服器。 資料庫管理員不需要變更應用程式的程式碼或作業步驟,即可加入、移除或重新設定帳戶。

設定檔也可以協助資料庫管理員控制電子郵件的存取。 必須要有 DatabaseMailUserRole 成員資格,才能傳送 Database Mail。 管理員可以利用設定檔所提供的額外彈性來控制傳送郵件的人員及使用的帳戶。

公開或私人個人資料。 設定檔依預設是私人的,而且只有 sysadmin 固定伺服器角色的成員才能存取。

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

  • msdb 資料庫中的安全性主體會定義 msdb 。 它們只容許指定的資料庫使用者、角色和 sysadmin 固定伺服器角色的成員,使用該設定檔來傳送電子郵件。 若要使用私人設定檔, sysadmin 必須授與使用者權限,才能夠使用設定檔。 此外,預存程式的EXECUTE許可權 sp_send_dbmail 只會授與 DatabaseMailUserRole的成員。 系統管理員必須將使用者加入 DatabaseMailUserRole 資料庫角色,使用者才能夠傳送電子郵件。

設定檔序號

萬一電子郵件伺服器無法連上或無法處理訊息,設定檔將可改善其可靠性。 設定檔中的每個帳戶都有序號。 序號決定了 Database Mail 使用設定檔中之帳戶的順序。

對於新的電子郵件訊息,Database Mail 會使用最後一個成功傳送訊息的帳戶,或若是訊息尚未傳送,就使用最低序號的帳戶。 如果這個帳戶失敗,Database Mail 會使用序號次高的帳戶,依此類推,直到 Database Mail 傳送訊息成功為止,或直到序號最高的帳戶失敗為止。 如果序號最高的帳戶失敗,Database Mail 會在 sysmail_configure_spAccountRetryDelay參數所設定的時間之內,暫停傳送郵件,之後,再從最低的序號開始,重新嘗試傳送郵件的處理序。

使用AccountRetryAttempts參數在sysmail_configure_sp中設定外部郵件進程在指定配置檔中嘗試使用每個帳戶傳送電子郵件訊息的次數。

如果有多個序號相同的帳戶存在,Database Mail 只會將其中一個帳戶用在給定的電子郵件訊息上。 在這個情況下,Database Mail 並無法保證這個序號會用到哪個帳戶,也無法保證各訊息會用到相同的帳戶。

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) 刪除 Database Mail 設定檔。
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 是否已啟動。