企業級資料庫需要 7×24 小時監控。當第三方平台尚未部署時,SQL Server 內建的 Database Mail 可快速建立郵件預警機制。本文完整記錄:郵件設定、發送測試、自訂 Job 監控、SQL Server Agent 警報監控三大步驟。
一、啟用與設定 Database Mail
1. 準備郵件帳號(以 QQ 信箱為例)
- 開啟 SMTP 服務,產生「授權碼」作為資料庫郵件密碼。
- SMTP 伺服器:
smtp.qq.com,埠:465 (SSL) 或 587 (TLS)。

2. SSMS 設定精靈
- 管理 → Database Mail → 設定 Database Mail → 「啟用 Database Mail」
- 新增帳號:填寫郵件地址、顯示名稱、SMTP 伺服器、埠、SSL、認證(授權碼)

- 新增設定檔:關聯上述帳號,設為預設公開設定檔

- 系統參數:可調整重試次數、禁止附件副檔名、最大郵件大小等

- 完成:四個步驟皆顯示成功

3. 發送測試郵件
EXEC msdb.dbo.sp_send_dbmail
@profile_name = 'YourProfileName', -- 設定檔名稱
@recipients = 'admin@example.com', -- 收件者
@subject = '測試郵件',
@body = 'Database Mail 運作正常';
二、自訂 Job 監控(業務邏輯預警)
適用場景:檢查特定業務指標(如訂單積壓、磁碟空間、複寫延遲)超標時發信。
步驟
- 建立 Job → 步驟:撰寫 T-SQL 檢查邏輯,條件不符時
RAISERROR 拋出錯誤

- Job 通知頁面:勾選「失敗時」→ 郵件 → 選擇操作員

- 排程:依業務需求設定執行頻率(如每 5 分鐘)
三、SQL Server Agent 警報監控(系統事件預警)
機制:SQL Server 將錯誤寫入 Windows 事件日誌 → Agent 讀取日誌 → 比對警報定義 → 觸發通知/Job。

三種警報類型
- 事件警報:依錯誤號、嚴重等級、資料庫觸發(如權限不足、死鎖、資料庫離線)
- 效能警報:依效能計數器閾值觸發(如 CPU > 90%、鎖等待超過閾值)
- WMI 警報:依 WMI 事件觸發(進階)
建立事件警報範例:嚴重等級 16-25 錯誤發信
- 新增警報 → 類型:SQL Server 事件警報 → 資料庫:全部/指定 → 嚴重等級:16-25

- 回應頁面:勾選「通知操作員」→ 新增操作員 → 指定郵件/寻呼/Net Send

- 選項頁面:設定通知訊息、回應間隔(避免風暴)

四、權限與注意事項
- 執行
sp_send_dbmail 需 DatabaseMailUserRole 角色權限。
- Agent 服務帳號需具備網路存取權限以連接 SMTP 伺服器。
- 內網環境建議架設內部 SMTP 轉發器,避免直接對外連線被封鎖。
- 警報回應間隔預設 60 秒,高頻錯誤請調大避免郵件風暴。
五、總結
Database Mail 雖非專業監控平台替代品,但在無第三方工具、內網通暢、權限配置正確的前提下,能快速建立「業務邏輯 Job 監控」與「系統事件警報監控」雙層預警,滿足基本營運需求。