Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/sql-server-2008/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server 2008 数据库镜像和service broker,镜像路由不可操作_Sql Server 2008_Service Broker_Database Mirroring - Fatal编程技术网

Sql server 2008 数据库镜像和service broker,镜像路由不可操作

Sql server 2008 数据库镜像和service broker,镜像路由不可操作,sql-server-2008,service-broker,database-mirroring,Sql Server 2008,Service Broker,Database Mirroring,我们已经有一个服务代理运行了很长时间(在同一台服务器上运行)。现在我们想在两台服务器之间添加数据库镜像 为此,我们必须为ServiceBroker创建新路由和新端点(以支持故障切换时的镜像) 我们已经在运行完全相同版本的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上的Microsoft Corp

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

为此,我们必须为ServiceBroker创建新路由和新端点(以支持故障切换时的镜像)

我们已经在运行完全相同版本的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上的Microsoft Corporation企业版(64位)(版本7600:)

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

当我们在生产环境中实现这一点时,我们遇到了在开发环境中从未见过的问题

ServiceBroker的更新变得非常缓慢,但我们可以看到一些消息已经通过

我们得到的错误消息是:

镜像路由不可操作'TCP://server1.domain.local:4022'充当'Unknown'[].'TCP://server2.domain.local:4022'充当'Unknown'[]

镜像路由正在运行,但仅连接到主体。”TCP://server1.domain.local:4022'充当“主体”[]TCP://server2.domain.local:4022'充当“未知”[]

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

镜像路由可操作'TCP://server1.devdomain.local:4022'充当“镜像”[]TCP://server2.devdomain.local:4022'充当'Principal'[]

镜像路由正在运行,但仅连接到主体。”TCP://server1.devdomain.local:4022'充当“未知”[]TCP://server2.devdomain.local:4022'充当“主体”[]

正如您所看到的,我们得到的消息是,镜像路由在我们的生产服务器上不可用,但在我们的开发服务器上不可用

数据库镜像通过端口5022和ServiceBroker for 4022进行设置

创建路由/端点的一些示例:

--created on booth principal and mirror
CREATE ENDPOINT [Mirroring] 
    AUTHORIZATION [domain\sqlservice]
    STATE=STARTED
    AS TCP (LISTENER_PORT = 5022, LISTENER_IP = ALL)
    FOR DATA_MIRRORING (ROLE = PARTNER, AUTHENTICATION = WINDOWS NEGOTIATE, ENCRYPTION = DISABLED)

--created on booth principal and mirror
CREATE ENDPOINT [BrokerEndpoint] 
    AUTHORIZATION [domain\sqlservice]
    STATE=STARTED
    AS TCP (LISTENER_PORT = 4022, LISTENER_IP = ALL)
    FOR SERVICE_BROKER (MESSAGE_FORWARDING = DISABLED, MESSAGE_FORWARD_SIZE = 10, AUTHENTICATION = WINDOWS NEGOTIATE, ENCRYPTION = DISABLED)

--created in DB1 (on principal)
CREATE ROUTE [RouteToDB2]  AUTHORIZATION [dbo]  WITH SERVICE_NAME = N'ExecSPReceiveService' , BROKER_INSTANCE = N'DF46452B-97F3-4924-AD2A-A130FDC2016F' , ADDRESS = N'TCP://server1.domain.local:4022' , MIRROR_ADDRESS = N'TCP://server2.domain.local:4022' 

--created in DB2 (on principal)
CREATE ROUTE [RouteToDB1]  AUTHORIZATION [dbo]  WITH SERVICE_NAME = N'ExecSPSendService' , BROKER_INSTANCE = N'91CBA730-48A2-47A8-95C8-0558706250AB' , ADDRESS = N'TCP://server1.domain.local:4022' , MIRROR_ADDRESS = N'TCP://server2.domain.local:4022' 
当我们删除数据库镜像端点时,一切又开始正常工作

有什么想法吗


谢谢

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


当您说Service Broker更新变得非常慢时,您能提供一些数字说明它比基线慢了多少吗?

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


当您说Service Broker更新变得非常慢时,您能提供一些数字说明它比基线慢了多少吗?

问题是因为我们为Service Broker设置了“启动并忘记”模式

我们实施了rusanu推广的更好的解决方案,此后一切都在运行


我们还使用了此处显示的“快速数据推送”示例

问题是因为我们为ServiceBroker设置了“触发并忘记”模式

我们实施了rusanu推广的更好的解决方案,此后一切都在运行


我们还使用了此处显示的“快速数据推送”示例

消息与我们的开发服务器上的消息非常相似,但不同之处在于它没有说principal/mirror,而是说unknown。另外,我没有任何数字给你。由于这影响了我们的生产环境,我们必须尽快修复它。我们已经尝试在开发服务器上重新创建问题,但到目前为止没有任何成功。消息与开发服务器上的消息非常相似,但不同之处在于它没有说主体/镜像,而是说未知。另外,我没有任何数字给你。由于这影响了我们的生产环境,我们必须尽快修复它。我们曾试图在开发服务器上重现这个问题,但迄今为止没有任何成功。