Rag*_*ock 1 sql-server-2008 t-sql mirroring
我根据这篇文章设置了一些警报
现在我想让alert触发的Job向ac#应用程序发送一些信息(这个应用程序可以运行在SQL实例的同一台机器上,然后C#应用程序将信息发送到其他机器上)。
我的应用程序可以接受 TCP 连接,所以我正在考虑使用它,但也欢迎 SQL 服务器与我的应用程序通信的任何其他形式。
关于我如何做到这一点的任何建议?
*编辑: *能够通过 T-SQL 在另一个数据库(在其他情况下)中进行插入也可以解决我的问题。
背景信息: 我这样做是为了监视主体服务器何时公开运行以及镜像服务器何时同步。因此,如果证人出现故障,然后校长也出现故障,根据这些警报的记录,我可以判断将镜像升级为校长是否安全。
请注意,在这种情况下,我无法在不破坏镜像配置的情况下读取镜像数据库,因此在镜像数据库中使用表不是解决方案。
链接的文章使用可怕的 WMI 中间人来传递通知。那太容易出错了,不值得一提。去掉 WMI 中间人(也会丢失事件......)并直接转到源:为Database Mirroring State Change Event创建一个事件通知。将通知本地传送到您的数据库。然后,您可以在激活过程中直接对状态更改通知做出反应。您不需要任何 TCP 或其他通信,每个镜像伙伴都可以独立进行此监视,并且每个伙伴都会对本地状态变化做出反应。[msdb]
对于要对通知做出反应的 C# 应用程序,只需让它监视一个队列 ( WAITFOR(RECEIVE...)),在该队列中,您再次让系统传递事件通知以镜像状态更改事件。您甚至可以使用外部激活应用程序。
该专业的SQL Server 2008镜像本书有一个展示的正是这种技术的例子。
只是不要使用 WMI ......并且绝对不要通过 TCP 从服务器连接到客户端。
| 归档时间: |
|
| 查看次数: |
1126 次 |
| 最近记录: |