一、保姆级操作流程(按顺序执行)
1. 启用数据库邮件服务
-- 开启邮件功能(需sysadmin权限)
USE master;
GO
EXEC sp_configure 'show advanced options', 1;
RECONFIGURE;
EXEC sp_configure 'Database Mail XPs', 1; -- 关键参数:1=启用
RECONFIGURE;
GO
✅ 验证:执行后检查
sys.configurations中Database Mail XPs的value=1。
2. 配置发件邮箱(支持公网/内网)
-- 添加邮件账户(以QQ邮箱为例)
EXEC msdb.dbo.sysmail_add_account_sp
@account_name = 'DBA_Alert_Account',
@email_address = 'dba@qq.com', -- 管理员邮箱在此定义
@display_name = 'SQL Server Alert',
@mailserver_name = 'smtp.qq.com', -- 公网服务器
@port = 465, -- QQ邮箱必须用465/587
@username = 'dba@qq.com', -- 完整邮箱地址
@password = 'xxxxxx', -- QQ邮箱填「授权码」非密码!
@enable_ssl = 1; -- 必须启用SSL
⚠️ 服务器位置要求:
公网服务器:直接用
smtp.xxx.com(需开放25/465/587端口)内网服务器:填内部邮件服务器IP(如
192.168.1.10)。

3. 创建邮件配置文件
-- 将账户绑定到发送配置
EXEC msdb.dbo.sysmail_add_profile_sp
@profile_name = 'DBA_Alert_Profile';
EXEC msdb.dbo.sysmail_add_profileaccount_sp
@profile_name = 'DBA_Alert_Profile',
@account_name = 'DBA_Alert_Account',
@sequence_number = 1; -- 优先级
4. 定义管理员邮箱(操作员)
-- 设置接收报警的邮箱
EXEC msdb.dbo.sp_add_operator
@name = 'DBA_Admin', -- 操作员名称
@email_address = 'admin@company.com', -- 在此配置管理员邮箱
@enabled = 1;
📌 操作员是消息接收人,需在此明确定义邮箱。
5. 配置作业失败报警
方法1:SSMS图形化(推荐)
-
右键作业 → 属性 → 通知 → 勾选“当作业失败时” → 选择操作员
DBA_Admin→ 选择邮箱通知。
方法2:T-SQL脚本
EXEC msdb.dbo.sp_add_job
@job_name = N'Backup_DB_Job'; -- 作业名需提前存在
EXEC msdb.dbo.sp_add_notification
@job_name = N'Backup_DB_Job',
@operator_name = N'DBA_Admin',
@notification_method = 1; -- 1=邮件通知
6. 配置磁盘空间报警
-- 监控C盘剩余空间 < 10%
EXEC msdb.dbo.sp_add_alert
@name = 'Low_Disk_Space_Alert',
@performance_condition = 'LogicalDisk|% Free Space|C:|<10',
@notification_message = 'C盘空间不足10%,请立即处理!',
@include_event_description = 1; -- 包含事件详情
-- 绑定到操作员
EXEC msdb.dbo.sp_add_notification
@alert_name = 'Low_Disk_Space_Alert',
@operator_name = 'DBA_Admin',
@notification_method = 1;
二、关键问题详解
Q1:数据库邮件服务不启用会怎样?
→ 所有邮件发送失败!必须执行 步骤1 启用 Database Mail XPs。
Q2:内网服务器无法连接公网邮箱?
→ 改用企业内网邮箱服务器(如Exchange地址),或申请公网SMTP白名单。
Q3:邮件发送失败如何排查?
-- 检查邮件日志
SELECT * FROM msdb.dbo.sysmail_event_log;
常见原因:
-
🔸 端口被防火墙拦截(内网需开放25/465)
-
🔸 QQ邮箱未启用SMTP或填错授权码
-
🔸 SSL未开启(企业邮箱可能要求
@enable_ssl=0)
三、配置验证清单
|
步骤 |
验证命令 |
预期结果 |
|---|---|---|
|
邮件功能启用 |
|
|
|
操作员配置 |
|
管理员邮箱正确显示 |
|
邮件发送测试 |
|
收件箱收到邮件 |
💡 终极提示:报警生效需确保 SQL Server Agent服务正在运行! 可通过服务管理器或
EXEC xp_servicecontrol N'QUERYSTATE', N'SQLSERVERAGENT';检查。

被折叠的 条评论
为什么被折叠?



