我有两个 Sql Server 2005 实例,在主体和镜像配置中运行数据库的两个副本。
我希望在发生故障转移时向某人发送一封电子邮件,我的意思是主数据库发生故障(无论出于何种原因),因此两个数据库交换角色,镜像数据库成为主数据库(主数据库成为镜像数据库)。
我已经配置了“数据库邮件”,并使用发送了一条测试消息发送邮件成功。但我不知道如何创建在故障转移时运行的 Sql Server 代理作业(或任何可以工作的东西)。
我想象这样做的方式是以某种方式连接到某种“哦!我一秒钟前还是镜子,但我刚刚成为校长”事件并使其执行发送邮件。
有人知道怎么做吗?或者有更好的方法来实现这一点吗?
答案1
有一个解决方案可以发出故障转移警报,效果很好:
答案2
我假设您这里有一个见证实例,以允许数据库的自动故障转移。
我处理这个问题的方式是在主体和镜像上都有一个表,存储 sys.database_mirroring 中“mirroring_role_description”列的值,然后让 SQL 代理作业运行执行以下操作的脚本:
- 将当前值与存储值进行比较,如果发生改变则发送电子邮件
- 将当前值存储在表中