Вопрос

Возобновить БП после ошибки элемента данных

Иногда возникает ошибка в элементах добавления/изменения данных, например

System.Data.SqlClient.SqlException (0x80131904): Transaction (Process ID 66) was deadlocked on lock resources with another process and has been chosen as the deadlock victim. Rerun the transaction. в System.Data.SqlClient.SqlConnection.OnError(SqlException exception, Boolean breakConnection, Action`1 wrapCloseInAction) в System.Data.SqlClient.TdsParser.ThrowExceptionAndWarning(TdsParserStateObject stateObj, Boolean callerHasConnectionLock, Boolean asyncClose) в System.Data.SqlClient.TdsParser.TryRun(RunBehavior runBehavior, SqlCommand cmdHandler, SqlDataReader dataStream, BulkCopySimpleResultSet bulkCopyHandler, TdsParserStateObject stateObj, Boolean& dataReady) в System.Data.SqlClient.SqlCommand.FinishExecuteReader(SqlDataReader ds, RunBehavior runBehavior, String resetOptionsString, Boolean isInternal, Boolean forDescribeParameterEncryption) в 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) в 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) в System.Data.SqlClient.SqlCommand.InternalExecuteNonQuery(TaskCompletionSource`1 completion, String methodName, Boolean sendToPipe, Int32 timeout, Boolean& usedCache, Boolean asyncWrite, Boolean inRetry) в System.Data.SqlClient.SqlCommand.ExecuteNonQuery() в Terrasoft.Core.DB.DBExecutor.FailoverExecute[TResult](DbCommand command, Func`1 func) в Terrasoft.Core.DB.DBExecutor.<>c__DisplayClass110_0.<Execute>b__0(DbCommand command) в Terrasoft.Core.DB.DBExecutor.LoggingWrap[TResult](String sqlText, Func`2 queryExecutionAction) в Terrasoft.Core.DB.DBSecurityEngine.ExecuteSetEntitySchemaRecordOperationRightLevel(Insert recordRightsInsert, StoredProcedure setRecordPositionProcedure) в Terrasoft.Core.DB.DBSecurityEngine.SetEntitySchemaRecordOperationRightLevel(Guid adminUnitId, String schemaName, Guid administratedRecordId, EntitySchemaRecordRightOperation operation, EntitySchemaRecordRightLevel rightLevel, Boolean useDenyRecordRights, Boolean ignoreGrantRecordRight) в Terrasoft.Core.Process.Configuration.ChangeAdminRightsUserTask.AddRecordRight(DBSecurityEngine dbSecurityEngine, Entity entity, Dictionary`2 recordRight) в Terrasoft.Core.Process.Configuration.ChangeAdminRightsUserTask.InternalExecute(ProcessExecutingContext context) в Terrasoft.Core.Process.ProcessActivity.Execute(ProcessExecutingContext context) ClientConnectionId:bf656cfe-f52c-45b5-a37b-f1f5295cf440 Error Number: 1205, State: 51, Class: 13

Иногда БП настолько сложный и важный, что прерывать его и запускать новый -  проблема, а иногда и невозможно, т.к. непонятно чем он стригерился.

Можно ли продолжить БП с этого места:

1. Вручную?

2. Автоматически перезапустить упавший элемент с этого места?

У меня такой же вопрос

1 комментарий
Лучший ответ

Посмотрите обсуждение по ручному перезапуску элемента процесса в этой теме.

Насчет автоматического запуска придется выполнять дополнительные доработки. Думаю, что это не должно быть очень сложной задачей, учитывая, что Вы разберетесь, каким образом это сделать вручную.

Посмотрите обсуждение по ручному перезапуску элемента процесса в этой теме.

Насчет автоматического запуска придется выполнять дополнительные доработки. Думаю, что это не должно быть очень сложной задачей, учитывая, что Вы разберетесь, каким образом это сделать вручную.

Войдите или зарегистрируйтесь, чтобы комментировать