2017-06-09 3 views
0

を使用して「ロック、まだ私は生産でこのエラーを得た:"更新できませんでした。現在、私はすでに非決算接続用のコードをチェックしましたMS-アクセスOLEDB

System.Data.OleDb.OleDbException (0x80004005): Could not update; currently locked. 
    at System.Data.OleDb.OleDbCommand.ExecuteCommandTextErrorHandling(OleDbHResult hr) 
    at System.Data.OleDb.OleDbCommand.ExecuteCommandTextForSingleResult(tagDBPARAMS dbParams, Object& executeResult) 
    at System.Data.OleDb.OleDbCommand.ExecuteCommandText(Object& executeResult) 
    at System.Data.OleDb.OleDbCommand.ExecuteCommand(CommandBehavior behavior, Object& executeResult) 
    at System.Data.OleDb.OleDbCommand.ExecuteReaderInternal(CommandBehavior behavior, String method) 
    at System.Data.OleDb.OleDbCommand.ExecuteNonQuery() 
    at System.Data.OleDb.OleDbCommand.ExecuteNonQuery() 
    at (my code here) 

は、は、ExecuteNonQueryでtheresの再帰呼び出し(ように見える)私達ができますスタックの下部を参照してください。再試行パターンですか?何かご意見は?

追加情報:

  • は、私の環境でエラーを再現できませんでした。また、負荷テストを成功させずに再現しようとしました。
  • アプリが公開されてから約40分後、私はさまざまなクライアントからこの種のエラーを受け取りました(異なるクライアントは同じデータベースを共有しません)。その後、私は大量デッドロックのためにロールバックされました。
  • すべてのエラースタックには再帰性があります(Command.ExecuteNonQueryまたはConnection.Openで発生します)。
  • 通常、現在ロックされているメッセージは、データベースをロックしたユーザーの名前を提供しますが、この特定のメッセージはロックされません。
+0

https://msdn.microsoft.com/en-us/library/jj653753.aspx#access_database –

+0

参照していただきありがとうございますが、データソースを変更するのは短期間のオプションではありません。 。 – ErikWitkowski

+0

クローズしていない接続があるかどうかを確認したが、それ以外の場合は全体のコンテキストを共有していないことに注意しました。あなたがやっていることに関する質問テキストや他の詳細を見ることは役に立ちますか?それがロックされていると言えば、実際には他の場所にロックされているかもしれません。 ExecuteNonQuery()再帰は面白いですが、エラーとは何の関係もない可能性があります。 –

答えて

0

この問題は、データプロバイダ内の多くの低速クエリ、一致およびエラーによって発生しました。

New Relic今回は私の人生を救った。これは、実稼働環境の問題を突き止めるために私が知っている最良のツールです。

関連する問題