备份、移动和恢复使用 Service Broker 的数据库的正确方法是什么?

备份、移动和恢复使用 Service Broker 的数据库的正确方法是什么?

SqlDependency我目前正在开发一个依赖于服务代理的应用程序。

每次我将数据库从开发状态移至暂存状态时,我都会遇到一个问题,即我收到一个 YSOD,指出

当前数据库的 SQL Server Service Broker 未启用,因此不支持查询通知。如果您希望使用通知,请启用此数据库的 Service Broker。

我不是 SQL Server 专家,所以我不明白为什么会发生这种情况。我尝试了很多方法,例如运行

ALTER DATABASE [DbName] SET ENABLE_BROKER

在新恢复的数据库上。这并不能解决问题。还可以调用

ALTER DATABASE [DbName] SET NEW_BROKER WITH ROLLBACK IMMEDIATE

没有帮助。

我还在DISABLE_BROKER我的开发数据库上运行了它,然后执行了备份。恢复到临时服务器,然后运行两者ENABLE_BROKER,并SET NEW_BROKER希望有所收获。

两台服务器都在 Windows 2003 上运行 SQL 2005。

我的应用程序正在使用SqlDependency.Start(connectionString),所以我相信我正在使用默认服务代理端点而不是命名端点(?)

数据库被命名为不同的在开发和登台服务器上,但一些配置确保应用程序使用正确的连接字符串。

我遗漏了什么?我做错了什么?

移动(备份/恢复)使用 Service Broker/SqlDependency 的数据库的正确方法是什么?

答案1

您需要使用 ENABLE_BROKER 选项恢复数据库(通过使用 WITH ENABLE_BROKER 子句恢复数据库命令)。请记住,数据库将保留其唯一的代理 ID,因此在执行此操作后,您需要注意恢复的数据库与开发环境中剩余的数据库之间没有冲突。

当您调用 NEW_BROKER 时,一个新的唯一代理 ID 已被分配给数据库,因此现有对话注定失败(它们无法再到达目标代理 ID)。

以下是有关管理经纪人身份的更多信息:MSDN:管理服务代理身份

相关内容