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

xpstar.dll突然ロードされませんでした。この dll は、管理ツールで使用される拡張ストアド プロシージャをホストします。インシデントが発生したときにロードされたという事実は、サーバー上で管理ツールのアクティビティがあったことを意味します。これにより、誰かが一瞬でもデータベースを台無しにした可能性について、多くの可能性が残されています。

次のステップは、管理上のデフォルト トレースをチェックして、インシデントの前後にアクティビティが見つかるかどうかを確認することです。

于 2013-03-21T20:33:49.560 に答える
1

テーブルの 1 つが大きくなりすぎて、十分な頻度でフラッシュされていないことが判明しました。データベースへの書き込みメソッドがタイムアウトし、再試行メソッドがエラーをスローしたこと。

于 2013-03-21T18:33:14.233 に答える