1

我有一个应用程序经常访问数据库以获得许多功能。它运行了好几天。今天早上我收到了一个System.Data.SqlClient.SqlException例外。发生这种情况时,应用程序没有做任何不正常的事情。关于造成这种情况或将来如何防止这种情况的任何想法?

Windows 事件日志

NT AUTHORITY\SYSTEM 
   Reason: Failed to open the explicitly specified database. 
   [CLIENT: <local machine>] 

异常堆栈跟踪

System.Data.SqlClient.SqlException (0x80131904): 
Cannot open database ""MyDB"" requested by the login. The login failed.
Login failed for user 'NT AUTHORITY\SYSTEM'.
   at System.Data.ProviderBase.DbConnectionPool.GetConnection(DbConnection owningObject)
   at System.Data.ProviderBase.DbConnectionFactory.GetConnection(DbConnection owningConnection)
   at System.Data.ProviderBase.DbConnectionClosed.OpenConnection(DbConnection outerConnection, DbConnectionFactory connectionFactory)
   at System.Data.SqlClient.SqlConnection.Open()
   at System.Data.Linq.DataContext.SubmitChanges(ConflictMode failureMode)
   at System.Data.Linq.DataContext.SubmitChanges()
   at ***.SubmitContextChanges(DataContext dataContext, Int32 counter) in c:\Work\***.cs:line 332

紧随其后的 Windows 事件

Attempting to load library 'xpstar.dll' into memory. 
 This is an informational message only. No user action is required.
4

3 回答 3

4

此消息意味着它确实联系了服务器,但无法打开连接字符串中指定的数据库(在异常消息中命名)。

检查事项:

  1. 数据库存在于 SQL 服务器上并且它处于联机状态。
  2. 用户有权访问指定的数据库。
  3. 登录的默认数据库是正确的并且用户可以访问它。
  4. 连接字符串没有被改变。
于 2013-03-21T17:35:04.050 回答
1

事实证明,我们的一张桌子变得太大并且没有足够频繁地刷新。wright to database 方法超时,我们的 retry 方法抛出了错误。

于 2013-03-21T18:33:14.233 回答
1

xpstar.dll没有突然加载。此 dll 托管管理工具使用的扩展存储过程。它在事件发生时加载的事实意味着服务器上存在管理工具活动。这为某人可能如何弄乱您的数据库(即使是暂时的)留下了许多途径。

下一步是检查管理默认跟踪,看看您是否可以在事件发生时找到任何活动。

于 2013-03-21T20:33:49.560 回答