-- 啟動 (參數可選)
EXEC xp_startmail @user = 'ProfileName', @password = 'Password';
-- 或企業管理員 → 支援服務 → SQL Mail 右鍵 → 啟動
-- 停止
EXEC xp_stopmail;
EXEC xp_sendmail
@recipients = 'recipient1@domain.com;recipient2@domain.com', -- 必填,分號分隔
@message = '郵件內文',
@query = 'SELECT * FROM Orders WHERE OrderDate > GETDATE()-7', -- 查詢結果附件
@attachments = 'C:\Reports\Monthly.pdf', -- 檔案附件
@copy_recipients = 'cc@domain.com', -- 副本
@blind_copy_recipients = 'bcc@domain.com', -- 密件副本
@subject = '每週訂單報表',
@type = 'text/html', -- 內容類型
@attach_results = 'TRUE', -- 查詢結果作附件
@no_output = 'FALSE', -- 是否抑制輸出
@no_header = 'FALSE', -- 是否省略欄位標題
@width = 80, -- 文字模式行寬
@separator = ',', -- 欄位分隔符
@echo_error = 'TRUE', -- 回傳錯誤訊息
@set_user = 'guest', -- 查詢執行身分
@dbuse = 'Northwind'; -- 查詢資料庫
| 參數 | 說明 | 預設值 |
|---|---|---|
| @recipients | 收件人,分號分隔多位址 | 必填 |
| @message | 純文字郵件內文 | 空字串 |
| @query | T-SQL 查詢,結果可附件或內文 | NULL |
| @attachments | 檔案完整路徑,多檔分號分隔 | NULL |
| @attach_results | TRUE=查詢結果存檔附件,FALSE=內文內嵌 | FALSE |
| @no_header | TRUE=不包含欄位名稱標題列 | FALSE |
| @set_user | 查詢執行權限內容 | guest |
| @dbuse | 查詢預設資料庫 | 目前資料庫 |
-- 建立排程作業步驟
EXEC msdb.dbo.sp_add_jobstep
@job_name = 'Daily Sales Report',
@step_name = 'Send Report',
@subsystem = 'TSQL',
@command = N'
EXEC xp_sendmail
@recipients = ''sales@company.com'',
@subject = ''Daily Sales '' + CONVERT(VARCHAR(10), GETDATE(), 120),
@query = ''SELECT ProductName, SUM(Quantity) AS TotalQty, SUM(Amount) AS TotalAmt
FROM OrderDetails od JOIN Orders o ON od.OrderID = o.OrderID
WHERE o.OrderDate >= DATEADD(DAY, -1, GETDATE())
GROUP BY ProductName ORDER BY TotalAmt DESC'',
@attach_results = ''TRUE'',
@width = 200,
@no_header = ''FALSE''';
BEGIN TRY
-- 業務邏輯
END TRY
BEGIN CATCH
EXEC xp_sendmail
@recipients = 'dba@company.com',
@subject = 'SQL Job Error: ' + ERROR_PROCEDURE(),
@message = 'Error: ' + ERROR_MESSAGE() + CHAR(13) +
'Line: ' + CAST(ERROR_LINE() AS VARCHAR) + CHAR(13) +
'Time: ' + CONVERT(VARCHAR, GETDATE(), 120),
@echo_error = 'TRUE';
END CATCH
xp_sendmail → sp_send_dbmailxp_stopmail,移除啟動項目SQL Mail 是 SQL Server 2000 時代的產物,理解其參數有助於平滑遷移至 Database Mail,但新專案請直接採用原生 SMTP 方案。