SQL Server 2012 登录异常
SQL Server 2012 Logon exception
我有 2 个应用程序连接到同一个数据库,分别启动时都很好。当我同时启动它们时,其中一个会出现登录异常,如下所示,这种情况发生在我 99% 的尝试中(所以它们很少能一起正常运行)。
并且始终是同一个应用程序获得异常 (1):
- 正在对数据库进行查询的应用程序
- 一个连接到服务代理的应用程序(这个在所有情况下都有效)
如果我延迟第二个应用程序的启动,第一个应用程序将崩溃。
这里有一些 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;
继承代码的乐趣:-)(不是)
我有 2 个应用程序连接到同一个数据库,分别启动时都很好。当我同时启动它们时,其中一个会出现登录异常,如下所示,这种情况发生在我 99% 的尝试中(所以它们很少能一起正常运行)。
并且始终是同一个应用程序获得异常 (1):
- 正在对数据库进行查询的应用程序
- 一个连接到服务代理的应用程序(这个在所有情况下都有效)
如果我延迟第二个应用程序的启动,第一个应用程序将崩溃。 这里有一些 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;
继承代码的乐趣:-)(不是)