我收到我的MSSQL 2005 Standard机器的投诉,他们无法启动服务代理,然后从服务代理pipe理器收到一条消息:
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对服务代理经理来说意味着什么错误的文档。 任何想法如何诊断和解决这个问题?
3602? 这确实是奇怪的。
如果你有任何重复,你可以检查sys.databases service_broker_guid,特别是如果数据库ID为5763与其他数据库重复?
在TechNet论坛有一个线索, http://social.msdn.microsoft.com/Forums/en-US/sqlservicebroker/thread/a5af6e9a-f3b6-4b73-ae3d-95238502d28f ,这涉及到这个问题(尽pipe原始post是不是关于那个错误),其中一个答复说3602是“一个交易中止通知”。
难道是在模式更新之后,一些针对这些数据库的事务或操作没有成功完成(顺便说一句,那些数据库的数千(!)全部与模式相同,即同一个应用程序的数据库)? 试图运行SQL事件探查器,看看3602是否可以捕获?
想想我发现它:
此错误是由EXECUTE AS基础结构无法模拟CDR数据库所有者造成的。 通常这是在两台机器之间移动数据库的结果。 将此数据库的所有者更改为有效的login名。 使用其中一个来更改CDR所有者:
修改数据库:: [CDR]到[SA];
看到: