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 指定服务\u代理\u guid,而不是从新的\u代理获取随机guid_Sql Server_Service Broker - Fatal编程技术网

Sql server 指定服务\u代理\u guid,而不是从新的\u代理获取随机guid

Sql server 指定服务\u代理\u guid,而不是从新的\u代理获取随机guid,sql-server,service-broker,Sql Server,Service Broker,在SQL 2008中,有没有一种方法可以指定service_broker_guid,而不是简单地接受以下提供给您的任何guid: ALTER DATABASE MyDB SET NEW_BROKER 我们当前的(我认为是坏的)发布方法是恢复两个具有相互依赖关系的数据库。一个是“源”数据库,另一个是星型模式BI数据库。回归测试计划的一部分是在不同服务器甚至同一服务器上以“黄金”状态恢复两个数据库的备份 我们通常不在路由中包含BROKER_实例变量,因为在大多数地方,我们不需要它们(即服务名称和地

在SQL 2008中,有没有一种方法可以指定service_broker_guid,而不是简单地接受以下提供给您的任何guid:

ALTER DATABASE MyDB SET NEW_BROKER
我们当前的(我认为是坏的)发布方法是恢复两个具有相互依赖关系的数据库。一个是“源”数据库,另一个是星型模式BI数据库。回归测试计划的一部分是在不同服务器甚至同一服务器上以“黄金”状态恢复两个数据库的备份

我们通常不在路由中包含BROKER_实例变量,因为在大多数地方,我们不需要它们(即服务名称和地址的组合足以保证交付)。但是,当我们有两个数据库在同一个实例上运行且都启用了代理时,其中一个数据库将需要一个新的代理\u ID。此外,到这些数据库的所有路由现在都需要一个代理\u实例限定符,因为在同一地址上有两个服务\u名称


我们使用Visual Studio Database Professional生成生成输出脚本,除非您事先知道,否则没有简单的方法将代理实例作为其SQLCMD变量替换技术的一部分包含在内。

否。新的代理将生成新的guid

没有办法使用特定的guid,这是非常有意的。如果你解释一下让你问这个问题的根本问题是什么,也许我们可以努力找到解决这个问题的办法

编辑之后

broker_实例以及路由信息被视为运行时、部署特定的信息。因此,它不是为了接受固定的、预先确定的值而设计的,这正是VS GDR项目或一组SQLCMD脚本想要使用的。此外,broker_instance_id实际上是一个唯一的、特定于数据库实例的值,允许用户指定自己的值将很快导致重复,这将混淆试图交换消息的所有对话端点

不过,你面临的问题是合理的。如何自动化路由信息的部署(以及自动化证书的部署和交换、配置不登录用户并授予适当权限、配置远程服务绑定和ServiceBroker传输端点等相关问题)。根本没有向导可以执行此操作。实际处理这个问题的任务


曾几何时,我制作了一个名为ssbslm.exe的工具,它自动化了整个过程,并设计为可以从脚本中使用。该工具尽一切努力在两个任意服务之间设置路由、证书和端点。虽然这个工具不再可用(冗长乏味的故事,为什么会这样),但这个故事的要点是,写一个也不难。那天我花了几天时间

否。新的\u代理将生成新的guid

没有办法使用特定的guid,这是非常有意的。如果你解释一下让你问这个问题的根本问题是什么,也许我们可以努力找到解决这个问题的办法

编辑之后

broker_实例以及路由信息被视为运行时、部署特定的信息。因此,它不是为了接受固定的、预先确定的值而设计的,这正是VS GDR项目或一组SQLCMD脚本想要使用的。此外,broker_instance_id实际上是一个唯一的、特定于数据库实例的值,允许用户指定自己的值将很快导致重复,这将混淆试图交换消息的所有对话端点

不过,你面临的问题是合理的。如何自动化路由信息的部署(以及自动化证书的部署和交换、配置不登录用户并授予适当权限、配置远程服务绑定和ServiceBroker传输端点等相关问题)。根本没有向导可以执行此操作。实际处理这个问题的任务


曾几何时,我制作了一个名为ssbslm.exe的工具,它自动化了整个过程,并设计为可以从脚本中使用。该工具尽一切努力在两个任意服务之间设置路由、证书和端点。虽然这个工具不再可用(冗长乏味的故事,为什么会这样),但这个故事的要点是,写一个也不难。那天我花了几天时间

我更新了我的问题。老实说,正确的答案是“您的发布过程是错误的”。正在寻找改进方法,而不涉及旋转更多SQL实例:)。我更新了我的问题。老实说,正确的答案是“您的发布过程是错误的。”正在寻找不涉及旋转更多SQL实例的改进方法:)。