1

在 SQL 2008 中,有没有一种方法可以指定 service_broker_guid 而不是简单地获取通过以下方式提供给您的任何 GUID:

ALTER DATABASE MyDB SET NEW_BROKER

我们当前的(在我看来是破碎的)发布方法是恢复两个具有相互依赖关系的数据库。一种是“源”数据库,一种是星型 BI 数据库。回归测试计划的一部分是将两个数据库的备份恢复为“黄金”状态,跨越不同的服务器,甚至是同一台服务器。

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

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

4

1 回答 1

1

不会。NEW_BROKER 会生成一个新的 guid。

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

在你的编辑之后。

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

您面临的问题是合法的。如何自动部署路由信息(以及自动部署和交换证书、配置无登录用户和授予适当权限、配置远程服务绑定和服务代理传输端点的相关问题)。根本没有向导可以做到这一点。Quest有一套工具可以实际处理这个问题。

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

于 2011-03-09T05:50:02.613 回答