我收到 MSSQL 2005 标准机器的投诉,说它们无法启动服务代理,随后收到服务代理管理器的一条消息:
Jul 20 08:35:47 sql3 MSSQL$SQL3: 9697: Could not start Service Broker for database id: 5763. A problem is preventing SQL Server from starting Service Broker. Check the SQL Server error log for additional messages.
Jul 20 08:35:47 sql3 MSSQL$SQL3: 9645: An error occurred in the service broker manager, Error: 3602, State: 145.
我找不到有关错误 3602 对服务代理管理器意味着什么的文档。有没有什么方法可以诊断和修复此问题?
答案1
3602?这确实很奇怪。
您能否检查 sys.databases service_broker_guid 中是否有任何重复项,特别是如果 id 为 5763 的数据库与其他数据库重复?
答案2
TechNet 论坛上有一个帖子,http://social.msdn.microsoft.com/Forums/en-US/sqlservicebroker/thread/a5af6e9a-f3b6-4b73-ae3d-95238502d28f,其中涉及到了这个问题(尽管原始帖子与该错误无关),其中一个回复说 3602 是“交易中止通知”。
可能是在架构更新后,针对这些数据库的某些事务或操作未能成功完成(顺便问一下,这数千个数据库的架构是否完全相同,即同一应用程序的数据库)?您是否尝试运行 SQL Profiler 并查看是否能够捕获 3602 发生的情况?
答案3
我认为我找到了:
此错误是由于 EXECUTE AS 基础结构无法模拟 CDR 数据库所有者而导致的。通常,这是由于在两台计算机之间移动数据库而导致的。将此数据库的所有者更改为有效的登录名。使用以下方法之一更改 CDR 所有者:
将数据库::[CDR] 的授权更改为 [SA];
看: