我有两个 Sql Server 2005 实例,在主体和镜像配置中运行两个数据库副本。
每当发生故障转移时,我想向某人发送电子邮件,我的意思是 Principal DB 出现故障(无论出于何种原因),因此两个 DB 的交换角色,Mirror 成为 Principal(而 Principal 成为 Mirror)。
我已经配置了“数据库邮件”并使用sp_send_dbmail成功发送了一条测试消息。但我不知道如何创建在故障转移时运行的 Sql Server 代理作业(或任何可行的方法)。
我想这样做的方法是以某种方式挂钩某种“哦!我一秒钟前是镜子,但我刚刚成为校长”事件并将其设为 exec sp_send_dbmail。
任何人都知道如何做到这一点?或者更好的方法来实现这一点?
有一个解决故障转移警报的解决方案,效果很好:
http://msdn.microsoft.com/en-us/library/cc966392.aspx
我假设您在这里有一个见证实例以允许对数据库进行自动故障转移。
我处理这个问题的方法是在主体和镜像上都有一个表,用于存储 sys.database_mirroring 中的“mirroring_role_description”列的值,然后让 SQL 代理作业运行一个执行以下操作的脚本: