“ALTER DATABASE ... SET NEW_BROKER”有什么作用?有什么可担心的吗?

nig*_*ivy 4 sql-server

我在使用 sql 代理服务时遇到问题。是否有理由担心设置新的 sql broker 服务?我真的很担心这样做,但我有点不知所措,因为我知道它会清除要发送的消息队列,但这是我唯一需要担心的事情吗?当我运行此语句时,还有什么我应该寻找或必须完成的吗?

Rem*_*anu 6

仅当您的数据库参与分布式对话时。NEW_BROKER改变你的service_broker_id. 如果您创建了任何具有服务名称服务实例的路由,那么它将变得无效,因为路由服务实例值不再反映目的地service_broker_guid。没有说在一个数据库上执行 NEW_BROKER 时,该数据库确实有跨越多个对话的正在运行的对话(甚至是同一对话中的数据库),这些对话将有一半“核弹”,另一半将被搁置,无法取得任何进展(必须使用 END ... WITH CLEANUP 清理或其他数据库也必须是 NEW_BROKER ed)。

请注意 NEW_BROKER 会影响隐藏的对话,例如由事件通知创建的对话。

如果你拥有的一切都是本地的,在同一个数据库中,那么你基本上没有什么可担心的。