SQL Server配置作业失败报警与磁盘空间监控的​​保姆级教程​​,涵盖邮箱定义、公网/内网配置差异、邮件服务启用等关键细节

一、保姆级操作流程(按顺序执行)

​1. 启用数据库邮件服务​
-- 开启邮件功能(需sysadmin权限)
USE master;
GO
EXEC sp_configure 'show advanced options', 1;
RECONFIGURE;
EXEC sp_configure 'Database Mail XPs', 1;  -- 关键参数:1=启用
RECONFIGURE;
GO

✅ ​​验证​​:执行后检查 sys.configurationsDatabase Mail XPsvalue=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


三、配置验证清单

步骤

验证命令

预期结果

邮件功能启用

SELECT * FROM sys.configurations WHERE name = 'Database Mail XPs';

value_in_use = 1

操作员配置

SELECT * FROM msdb.dbo.sysoperators;

管理员邮箱正确显示

邮件发送测试

EXEC msdb.dbo.sp_send_dbmail @profile_name='DBA_Alert_Profile', @recipients='test@qq.com', @subject='Test', @body='OK';

收件箱收到邮件


💡 ​​终极提示​​:报警生效需确保 ​​SQL Server Agent服务正在运行​​! 可通过服务管理器或 EXEC xp_servicecontrol N'QUERYSTATE', N'SQLSERVERAGENT';检查。

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

杜哥无敌

你的鼓励是我创作的最大动力!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值