我们有一个运行了很长时间的服务代理(在同一台服务器上运行)。现在,我们要在两个服务器之间添加数据库镜像。

为此,我们必须为服务代理创建新的路由和新的端点(以在故障转移的情况下支持镜像)。

我们已经在运行完全相同版本的Windows和sql-server的开发环境中进行了尝试。这是:

Microsoft SQL Server 2008 R2(RTM)-10.50.1734.0(X64)2010年8月11日12:51:02版权所有(c)Windows NT 6.1(Build 7600:)上的Microsoft Corporation Enterprise Edition(64位)

一个区别是开发环境在虚拟系统中运行。

当我们在生产环境中实施此操作时,我们遇到了开发过程中从未见过的问题。

服务代理的更新变得非常缓慢,但是我们可以看到某些消息通过了。

我们收到的错误消息是:

镜像路由不可用。 “ TCP://server1.domain.local:4022”充当“未知” []。 “ TCP://server2.domain.local:4022”充当“未知” []。

镜像路由可操作,但仅连接到主体。 “ TCP://server1.domain.local:4022”充当“主体” []。 “ TCP://server2.domain.local:4022”充当“未知” []。

在我们的开发服务器上,我们收到了类似的消息:

镜像路由可用。 “ TCP://server1.devdomain.local:4022”充当“镜像” []。 “ TCP://server2.devdomain.local:4022”充当“主体” []。

镜像路由可操作,但仅连接到主体。 “ TCP://server1.devdomain.local:4022”充当“未知” []。 “ TCP://server2.devdomain.local:4022”充当“主体” []。

如您所见,我们收到有关镜像路由在我们的生产服务器上不起作用,但在我们的开发服务器上不起作用的消息。

通过端口5022和4022的服务代理设置数据库镜像。

有关如何创建路由/端点的一些示例: 通用标签

当我们删除数据库镜像端点时,一切又开始正常工作。

有什么想法吗?

谢谢!

有帮助吗?

解决方案 2

问题是由于我们为服务代理设置了“即发即弃”模式。

http://rusanu.com/2006/04/06/fire-and-forget-good-for-the-military-but-not-for-service-broker-conversations/

我们实施了rusanu推广的更好的解决方案,此后一切都一直在起作用。

我们还使用了此处显示的“快速数据推送”示例 http://msftsbprodsamples.codeplex.com/

其他提示

据我所知,这些消息不是错误,而是在主体与镜像服务器建立连接时记录的预期信息性消息。闲置90秒后,未使用的镜像连接将被丢弃,然后根据需要重新连接,因此,根据您的镜像数据移动方式,您可能会或多或少地看到这些路由消息。

当您说Service Broker更新变得非常缓慢时,您能否提供一些数字来说明它与基准相比要慢多少?

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top