SQL Server 2012 登录异常

SQL Server 2012 Logon exception

我有 2 个应用程序连接到同一个数据库,分别启动时都很好。当我同时启动它们时,其中一个会出现登录异常,如下所示,这种情况发生在我 99% 的尝试中(所以它们很少能一起正常运行)。

并且始终是同一个应用程序获得异常 (1):

  1. 正在对数据库进行查询的应用程序
  2. 一个连接到服务代理的应用程序(这个在所有情况下都有效)

如果我延迟第二个应用程序的启动,第一个应用程序将崩溃。 这里有一些 sql 服务器日志:

2015-09-18 07:27:20.43 Logon       Error: 18456, Severity: 14, State: 38.
2015-09-18 07:27:20.43 Logon       Login failed for user 'domain\user'. Reason: Failed to open the explicitly specified database 'dbname'. [CLIENT: <local machine>]
2015-09-18 07:27:21.32 spid55      Setting database option ENABLE_BROKER to ON for database 'dbname'.

在 SQL 服务器日志中总是这样,第 2 行登录错误,然后是 ENABLE_BROKER 行。我在想service broker和之前的2.

有关系

关于 envirenmont 的详细信息:SQL 服务器 11.0.3153.0 - 64 位,Windows 7 (7601) 运行 在虚拟机上。

因为你的数据库是单用户模式。使用单用户模式,只有一个客户端可以连接到数据库。

改为多用户模式

GO
ALTER DATABASE AdventureWorks2012
SET MULTI_USER;

您可以在此处阅读有关单用户模式的更多信息:https://msdn.microsoft.com/en-us/library/ms345598.aspx?

最后我找到了造成这种情况的原因,它是下面的 alter database 语句,我现在看不到它的用法(在使用服务代理时,它应该由数据库管理员启用,而不是每次应用程序已重新启动)。删除该代码后,一切似乎都很好。

ALTER DATABASE [dbname] SET ENABLE_BROKER WITH ROLLBACK IMMEDIATE; 

继承代码的乐趣:-)(不是)