2011-03-09 81 views
1

随机一个在SQL 2008,有没有指定service_broker_guid的方式,而不是简单地采取任何GUID是给你:指定service_broker_guid而不是让来自NEW_BROKER

ALTER DATABASE MyDB SET NEW_BROKER 

我们目前的(坏了,我意见)发布方法是恢复两个具有相关关系的数据库。一个是“源”数据库,另一个是星型模式BI数据库。部分回归测试计划是在不同服务器甚至同一台服务器上以“黄金”状态恢复两个数据库的备份。

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

我们使用Visual Studio Database Professional来生成我们的构建输出脚本,除非您事先知道它,否则根本没有简单的方法可以将BROKER_INSTANCE作为其SQLCMD变量替换技术的一部分。

回答

1

不,NEW_BROKER会生成一个新的GUID。

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

编辑完成后。

broker_instance以及路由信息被视为运行时的部署特定信息。因此,它的目的不是为了接受固定的预定值,这是VS GDR项目或一组SQLCMD脚本想要使用的值。此外,broker_instance_id实际上是一个独特的数据库实例特定值,并且允许用户指定自己会很快导致重复,这会混淆尝试交换消息的对话端点。

您面临的问题虽然是合法的。如何自动部署路由信息(以及与证书自动部署和交换相关的问题,配置无登录和授予适当权限的用户,配置远程服务绑定和服务代理传输端点等相关问题)。根本没有向导来做到这一点。任务has a set of tools实际上处理这个。

曾几何时,我制作了一个名为ssbslm.exe的工具,它可以自动完成整个过程,并且设计为可以从脚本使用。该工具完成了在两个任意服务之间设置路由,证书和端点的所有工作。虽然这个工具已经不再可用(漫长而无聊的故事为何如此),但这个故事的要点在于不是很难写出一个。在几天之后带我回来了。

+0

我更新了我的问题。老实说,正确的答案是“你的发布过程是错误的。”寻找改进方法,不涉及更多的SQL实例:)。 – 2011-03-10 02:53:40

相关问题