Açıklama:
SQL tablolarındaki indexlere uzun süre bakım yapılmadığı takdirde fragmente olmaktadır. Bu durumda uygulama üzerinden SQL sorgusu çalıştırılan herhangi bir kısımda aşağıdakine benzer bir hata alabilirsiniz.
2018-02-19 17:07:47.8590|FATAL|WebRpc|30|Exception occured while invoking rpc method. Input parameters; |AltiKare.Data.Access.DataAccessException: "SELECT COUNT(*) FROM [wWorkItems] WITH (NOLOCK) INNER JOIN [wInstances] WITH (NOLOCK) ON ([wWorkItems].[InstanceId] = [wInstances].[Id]) LEFT JOIN [wVersions] WITH (NOLOCK) ON ([wInstances].[ProcessVersionId] = [wVersions].[Id]) LEFT JOIN [wProcesses] WITH (NOLOCK) ON ([wVersions].[ProcessId] = [wProcesses].[Id]) LEFT JOIN [wFolders] WITH (NOLOCK) ON ([wProcesses].[FolderId] = [wFolders].[Id]) LEFT JOIN [wWorkItems] AS [Previous] WITH (NOLOCK) ON ([wWorkItems].[PreviousWorkItemId] = [Previous].[Id]) WHERE ([wInstances].[InitiatedDomainId] = @p_DomainId AND [wWorkItems].[Id] IN ( SELECT [wWorkLists].[WorkItemId] AS [c0] FROM [wWorkLists] WITH (NOLOCK) WHERE (([wWorkLists].[OwnerId] = @p_WorklistOwnerId0 OR [wWorkLists].[OwnerId] = @p_WorklistOwnerId1 OR [wWorkLists].[OwnerId] = @p_WorklistOwnerId2 OR [wWorkLists].[OwnerId] = @p_WorklistOwnerId3 OR [wWorkLists].[OwnerId] = @p_WorklistOwnerId4 OR [wWorkLists].[OwnerId] = @p_WorklistOwnerId5)) ) AND ([wInstances].[State] = @p_p0 AND ([wWorkItems].[State] <> @p_p1 AND [wWorkItems].[State] <> @p_p2)))" command has failed ---> System.Data.SqlClient.SqlException: Execution Timeout Expired. The timeout period elapsed prior to completion of the operation or the server is not responding. ---> System.ComponentModel.Win32Exception: The wait operation timed out --- End of inner exception stack trace --- at System.Data.SqlClient.SqlConnection.OnError(SqlException exception, Boolean breakConnection, Action`1 wrapCloseInAction) at System.Data.SqlClient.TdsParser.ThrowExceptionAndWarning(TdsParserStateObject stateObj, Boolean callerHasConnectionLock, Boolean asyncClose) at System.Data.SqlClient.TdsParser.TryRun(RunBehavior runBehavior, SqlCommand cmdHandler, SqlDataReader dataStream, BulkCopySimpleResultSet bulkCopyHandler, TdsParserStateObject stateObj, Boolean& dataReady) at System.Data.SqlClient.SqlDataReader.TryConsumeMetaData() at System.Data.SqlClient.SqlDataReader.get_MetaData() at System.Data.SqlClient.SqlCommand.FinishExecuteReader(SqlDataReader ds, RunBehavior runBehavior, String resetOptionsString, Boolean isInternal, Boolean forDescribeParameterEncryption) at System.Data.SqlClient.SqlCommand.RunExecuteReaderTds(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, Boolean async, Int32 timeout, Task& task, Boolean asyncWrite, Boolean inRetry, SqlDataReader ds, Boolean describeParameterEncryptionRequest) at System.Data.SqlClient.SqlCommand.RunExecuteReader(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, String method, TaskCompletionSource`1 completion, Int32 timeout, Task& task, Boolean& usedCache, Boolean asyncWrite, Boolean inRetry) at System.Data.SqlClient.SqlCommand.RunExecuteReader(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, String method) at System.Data.SqlClient.SqlCommand.ExecuteScalar() at AltiKare.Data.Transaction.LogTimed[T](String message, Func`1 action) in C:\Program Files\TeamCity\buildAgent\work\993831e98ded3b94\AltiKare\Src\AltiKare\Data\Transaction.cs:line 193 at AltiKare.Data.DatabaseTransaction.ExecuteScalar[T](String commandText, FieldType resultType, ParameterValueCollection values) in C:\Program Files\TeamCity\buildAgent\work\993831e98ded3b94\AltiKare\Src\AltiKare\Data\Transaction.cs:line 848 --- End of inner exception stack trace --- at AltiKare.Data.DatabaseTransaction.ExecuteScalar[T](String commandText, FieldType resultType, ParameterValueCollection values) in C:\Program Files\TeamCity\buildAgent\work\993831e98ded3b94\AltiKare\Src\AltiKare\Data\Transaction.cs:line 862 at AltiKare.Data.Search.Context.QueryBuilder`1.RowCount(TContext context) in C:\Program Files\TeamCity\buildAgent\work\993831e98ded3b94\AltiKare\Src\AltiKare\Data\Search\Context\QueryBuilder.cs:line 387 at AltiKare.Workflow.Business.Server.Logic.WorklistManager.Count(IUserContext userContext, Nullable`1 tag, Query query) in C:\Program Files\TeamCity\buildAgent\work\993831e98ded3b94\AltiKare\Src\AltiKare.Workflow\Business\Server\Logic\WorklistManager.cs:line 60 at AltiKare.Workflow.Business.Server.Logic.WorklistManager.<>c__DisplayClass10_0.<GetTags>b__1(Tag tag) in C:\Program Files\TeamCity\buildAgent\work\993831e98ded3b94\AltiKare\Src\AltiKare.Workflow\Business\Server\Logic\WorklistManager.cs:line 140 at AltiKare.Workflow.Business.Server.Logic.TagManager.<>c__DisplayClass7_0.<GetTagsInternal>b__2(Tag x) in C:\Program Files\TeamCity\buildAgent\work\993831e98ded3b94\AltiKare\Src\AltiKare.Workflow\Business\Server\Logic\TagManager.cs:line 99 at System.Linq.Enumerable.WhereSelectArrayIterator`2.MoveNext() at System.Linq.Buffer`1..ctor(IEnumerable`1 source) at System.Linq.Enumerable.ToArray[TSource](IEnumerable`1 source) at AltiKare.Workflow.Business.Server.Logic.TagManager.GetTagsInternal(IUserContext userContext, Guid groupId, Nullable`1 parent, Func`3 initialize, Func`2 getItemCount) in C:\Program Files\TeamCity\buildAgent\work\993831e98ded3b94\AltiKare\Src\AltiKare.Workflow\Business\Server\Logic\TagManager.cs:line 99 at AltiKare.Workflow.Business.Server.Logic.WorklistManager.GetTags(IUserContext userContext) in C:\Program Files\TeamCity\buildAgent\work\993831e98ded3b94\AltiKare\Src\AltiKare.Workflow\Business\Server\Logic\WorklistManager.cs:line 81
Çözüm:
Öncelikle hatada geçen SQL sorgusunun yapıldığı tabloların indexleri kontrol edilir. SSMS üzerinde bir indexin sağ tık menüsünden Rebuild veya Reorganize seçeneğine tıklayarak indexin hangi yüzdeyle frag olduğunu görebilir ve defrag edebilirsiniz. Rebuild işlemi Reorganize işlemine göre daha ağır olduğundan Reorganize edilmesi tavsiye edilir.