私はロードを継承したMVC Webアプリケーションを持っています。MyCategoryとそのすべての子をWebフォームと呼び、編集を行い、次にクリック保存します。アプリケーションが動作する方法は、まず、モデル内の親レベルエンティティのすべてのデータを削除し、すべてを元に戻すことです。私たちは、これにはかなりの同時ユーザーベースしかありません。最大で毎晩二十分の節約で20人以下です。私たちは、ローカルでこのエラーを再現することはできませんが、オフショアチームの開始が動作したときに、我々はEntity Framework単純なDeleteAllで「待機操作がタイムアウトしました」
[SqlExceptionが(0x80131904)を見て始めている:タイムアウトが発生しました。操作が完了する前にタイムアウト時間 が経過しているか、サーバーが応答していません( )。声明は終了しました。]
エラーが表示されます。これは、親テーブルのLINQからの削除を呼び出すときに起こります(この時点ではデータはなく、子テーブルもありません)。これは断続的ですが、この1週間で何度か起こってしまいました。そこでは、プロジェクトのこの部分で作業が進んでいました。
スタックトレースから、109分以上経過しているように見えるSystem.Data.SqlClient.SqlCommand.FinishExecuteReaderで失敗しているように見えます。これは、テーブルから最大でtqoレコードを削除する必要があります。このテーブルからデータをロードする人は、非常に短時間で最大2つのレコードを取得する必要があります。
どこから始めればいいと思いますか?残念ながら、本番データベースでSQL Query AnalyzerまたはActivity Monitorを実行する権限がありません。
コールスタックは、次のとおりです。
[SqlException (0x80131904): Timeout expired. The timeout period elapsed prior to completion of the operation or the server is not responding.
The statement has been terminated.]
System.Data.SqlClient.SqlConnection.OnError(SqlException exception, Boolean breakConnection, Action`1 wrapCloseInAction) +388
System.Data.SqlClient.TdsParser.ThrowExceptionAndWarning(TdsParserStateObject stateObj, Boolean callerHasConnectionLock, Boolean asyncClose) +717
System.Data.SqlClient.TdsParser.TryRun(RunBehavior runBehavior, SqlCommand cmdHandler, SqlDataReader dataStream, BulkCopySimpleResultSet bulkCopyHandler, TdsParserStateObject stateObj, Boolean& dataReady) +4515
System.Data.SqlClient.SqlCommand.FinishExecuteReader(SqlDataReader ds, RunBehavior runBehavior, String resetOptionsString) +6557561
System.Data.SqlClient.SqlCommand.RunExecuteReaderTds(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, Boolean async, Int32 timeout, Task& task, Boolean asyncWrite, SqlDataReader ds) +6560327
System.Data.SqlClient.SqlCommand.RunExecuteReader(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, String method, TaskCompletionSource`1 completion, Int32 timeout, Task& task, Boolean asyncWrite) +586
System.Data.SqlClient.SqlCommand.InternalExecuteNonQuery(TaskCompletionSource`1 completion, String methodName, Boolean sendToPipe, Int32 timeout, Boolean asyncWrite) +742
System.Data.SqlClient.SqlCommand.ExecuteNonQuery() +287
System.Data.Linq.SqlClient.SqlProvider.Execute(Expression query, QueryInfo queryInfo, IObjectReaderFactory factory, Object[] parentArgs, Object[] userArgs, ICompiledSubQuery[] subQueries, Object lastResult) +789
System.Data.Linq.SqlClient.SqlProvider.ExecuteAll(Expression query, QueryInfo[] queryInfos, IObjectReaderFactory factory, Object[] userArguments, ICompiledSubQuery[] subQueries) +188
System.Data.Linq.SqlClient.SqlProvider.System.Data.Linq.Provider.IProvider.Execute(Expression query) +500
System.Data.Linq.StandardChangeDirector.DynamicDelete(TrackedObject item) +71
System.Data.Linq.StandardChangeDirector.Delete(TrackedObject item) +258
System.Data.Linq.ChangeProcessor.SubmitChanges(ConflictMode failureMode) +622
System.Data.Linq.DataContext.SubmitChanges(ConflictMode failureMode) +932
WebAppData.MyCategory.MyCategoryData.DeleteAll(Int32 id, Guid gid) +1053
WebAppServices.MyCategory.MyCategoryService.DeleteMyCategoryParentItems(Int32 id, Guid gId) +1632
WebAppServices.MyCategory.MyCategoryService.UpdateMyCategory(Int32 id, Guid gId, MyCategoryEntity mce) +51
WebAppUI.Areas.Documents.Categories.Sections.MyCategory.MyCategoryController.Save(Int32 Id, Guid gId, MyCategoryModel model) +93
EDIT:
接続文字列:
<add name="Data" connectionString="Data Source=myserver;Initial Catalog=mydatabase;User ID=myuser;Password=mypassword />
です。サーバーが利用可能で応答性が高いですか? – DevilSuichiro
接続文字列を表示できますか? – Sampath
デッドロックの可能性があります。また、レコードの範囲を指す単一の削除ステートメントではなく、EFからの削除が行ごとに実行されるため、削除のボリュームになることもあります。あなたが何が起こっているかを見ることができるようにその許可を持っている人を見つけることをお勧めします。 – Igor