问题描述
在其他服务器上恢复数据库后,Service broker 停止。 恢复的 db 有一个 Trustworthy Off,现在我将它设置为 On 以再次运行 broker。 我知道这是不好的做法。尤其是在阅读了 solomon-rutzky 的文章之后。 我已经按照 Solomon 的建议使用 sqlCLR UNSAFE 函数,而没有将数据库设置为 TRUSTWORTHY ON。它工作正常!
如果 TRUSTWORTHY OFF,如何恢复 broker 工作?
解决方法
运行 Service Broker 不需要值得信赖。但是,您可以将一个选项传递给 RESTORE
语句,这可能正是您所需要的。引用 the docs:
ENABLE_BROKER
指定 Service Broker 消息传递是 在恢复结束时启用,以便可以发送消息 立即地。默认情况下禁用 Service Broker 消息传递 在恢复期间。数据库保留现有的 Service Broker 标识符。
如果你没有这样做,还有希望!恢复后,您可以发出 alter databse [yourDB] set enable_broker;
。请注意,这需要独占数据库访问权限,因此您可能还需要添加 with rollback immediate
或类似的 alter database
语句。