我目前正在开发一个使用SqlDependency的应用程序,它依赖于Service Broker。
每次我将数据库从开发移到升级时,我遇到了一个问题,我得到一个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端点而不是命名的(?)
数据库在开发和登台服务器上被命名为不同 ,但是某些configuration可确保应用程序使用正确的连接string。
我错过了什么? 我究竟做错了什么?
移动(备份/恢复)使用Service Broker / SqlDependency的数据库的正确方法是什么?
您需要使用ENABLE_BROKER选项(通过使用RESTORE DATABASE命令的WITH ENABLE_BROKER子句)来恢复数据库 。 请记住,数据库将保留其唯一的代理ID,因此,在执行此操作后,需要注意恢复的数据库和开发环境中剩下的数据库之间没有冲突。
当您调用NEW_BROKER时,将为数据库分配一个新的唯一代理标识,因此现有对话将注定要失败(它们不能再到达目标代理标识)。
以下是关于pipe理经纪人身份的更多信息: MSDN:pipe理Service Broker身份