Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/27.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 使用具有多个路由的SQL Server Service Broker_Sql Server_Service Broker - Fatal编程技术网

Sql server 使用具有多个路由的SQL Server Service Broker

Sql server 使用具有多个路由的SQL Server Service Broker,sql-server,service-broker,Sql Server,Service Broker,使用SQL Server Service Broker时-如果我配置了一个具有两个路由的服务,并且在未指定所需目标代理实例的情况下执行了BEGIN DIALOG语句,那么它会选择哪些可能的目的地作为消息的目的地 我意识到使用begindialog可以明确地针对特定的代理,但这只是可选的。没有它会发生什么?消息会同时发送到两条路由吗?我现在找不到支持文档,但我的记忆表明它会任意选择其中一条路由。这是一种能够在提供相同处理能力的n个数据库之间实现负载平衡的方法,而作为消息发送者的您不在乎它们中的哪一

使用SQL Server Service Broker时-如果我配置了一个具有两个路由的服务,并且在未指定所需目标代理实例的情况下执行了
BEGIN DIALOG
语句,那么它会选择哪些可能的目的地作为消息的目的地


我意识到使用
begindialog
可以明确地针对特定的代理,但这只是可选的。没有它会发生什么?消息会同时发送到两条路由吗?

我现在找不到支持文档,但我的记忆表明它会任意选择其中一条路由。这是一种能够在提供相同处理能力的n个数据库之间实现负载平衡的方法,而作为消息发送者的您不在乎它们中的哪一个真正进行了处理。

正确。因为重试必须走同一条路线,所以选择并不完全是随意的。它基于会话ID的散列,用作可能路由数组中的索引。@remus-yes。路由只在新对话中发生。如果您已经与一个特定的数据库建立了对话,那么您将继续与该数据库进行对话。当然,这是OP的教诲,而不是你的(考虑到你给某人写信)!确保在每个路由上指定目标代理实例Id。