千家信息网

监控SQL Server数据库异常镜像状态发告警邮件

发表于:2025-11-07 作者:千家信息网编辑
千家信息网最后更新 2025年11月07日,监控SQL Server数据库异常镜像状态发告警邮件在部署了数据库镜像之后,我们需要监控参与镜像的主数据库和镜像数据库的状态,如果状态异常,发送告警邮件。那么这个脚本需要在主和镜像服务器上都运行。目录
千家信息网最后更新 2025年11月07日监控SQL Server数据库异常镜像状态发告警邮件

监控SQL Server数据库异常镜像状态发告警邮件

在部署了数据库镜像之后,我们需要监控参与镜像的主数据库和镜像数据库的状态,如果状态异常,发送告警邮件。那么这个脚本需要在主和镜像服务器上都运行。

目录视图sys.database_mirroring对SQL Server实例上的每个数据库都包含一行(包括系统数据库和未配置镜像的数据库),当然也包含所有镜像数据库的状态信息。我们可以查询该目录视图,对于每个异常状态的镜像数据库触发告警邮件。笔者的环境配置的是异步镜像,依赖于手动故障转移。

前提条件:

1. 配置好数据库邮件,有正确的Profile。

2. 有权限发送邮件的有效Login,需要是msdb数据库中DatabaseMailUserRole角色成员。

3. 一对用于监控的镜像数据库。

DECLARE@state VARCHAR(30)DECLARE@DbMirrored INTDECLARE@DbId INTDECLARE@String VARCHAR(100)DECLARE@databases TABLE (DBid INT, mirroring_state_desc VARCHAR(30))-- get status for mirrored databasesINSERT@databasesSELECTdatabase_id, mirroring_state_descFROMsys.database_mirroringWHEREmirroring_role_desc IN ('PRINCIPAL','MIRROR')ANDmirroring_state_desc NOT IN ('SYNCHRONIZED','SYNCHRONIZING')-- iterate through mirrored databases and send email alertWHILEEXISTS (SELECT TOP 1 DBid FROM @databases WHERE mirroring_state_desc IS NOT NULL)BEGINSELECT TOP 1 @DbId = DBid, @State = mirroring_state_descFROM @databasesSET @string = 'Host: '+@@servername+'.'+CAST(DB_NAME(@DbId) AS VARCHAR)+ ' - DB Mirroring is '+@state +' - notify DBA'EXEC msdb.dbo.sp_send_dbmail 'valid_mail_profile', 'DBA@xxx.com', @body = @string, @subject = @stringDELETE FROM @databases WHERE DBid = @DbIdEND--also alert if there is no mirroring just in case there should be mirroring :)SELECT@DbMirrored = COUNT(*)FROMsys.database_mirroringWHEREmirroring_state IS NOT NULLIF@DbMirrored = 0BEGINSET @string = 'Host: '+@@servername+' - No databases are mirrored on this server - notify DBA'EXEC msdb.dbo.sp_send_dbmail 'valid_mail_profile', 'DBA@xxx.com', @body = @string, @subject = @stringEND

依赖于手动故障转移。将以上脚本放到主服务器和镜像服务器上的作业里,每5分钟执行一次。


收到邮件效果如下:

数据 数据库 镜像 邮件 状态 监控 服务器 服务 配置 手动 故障 目录 脚本 视图 有效 一行 信息 前提 实例 成员 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 戴尔r270服务器启动盘设置 关于网络安全的新闻故事 ukey链接服务器失败什么意思 连接大厅服务器发生了错误 kettle输出文件到服务器 英国大学网络安全排名 美国国家网络安全委员会 blob存入数据库很慢 勤哲服务器密码策略 我的世界国际2b2t服务器免费 数据库表创建字段默认值 删除凭据管理内的服务器信息 我的世界服务器方块帽子 小企业数据库 数据库有哪些特点和优势 网络安全 德育实践课教案 2019网络安全宣传周口号 软件开发更新策略 数据库中使用视图有什么优点 软件连接不上SQL数据库 查询数据库中所有空数据的表 上海瀚途网络技术有限公司融资 只读模式数据库怎么查用户名 四举措 做好网络安全工作 sketsh软件开发公司名称 平谷有做软件开发的工作吗 dig 指定服务器 陕西地区买云服务器买哪个区 网络安全股为什么都亏损 服务器中找不到nexus怎么办
0