Project

General

Profile

Ошибка типа "SET содержат неверные значения "ARITHABORT"

При создании, редактировании, или удалении контрагента выпадает ошибка типа:

27/02/2020 10:38:51 : An error with the database: Ошибка INSERT. Следующие параметры SET содержат неверные значения: "ARITHABORT". Убедитесь, что параметры SET содержат значения, подходящие для использования с индексированные представления, индексы для вычисляемых столбцов, отфильтрованные индексы и/или уведомления о запросах, методы типов данных XML и/или операции с пространственными индексами.
                    : в System.Data.SqlClient.SqlConnection.OnError(SqlException exception, Boolean breakConnection, Action`1 wrapCloseInAction)
                    : в System.Data.SqlClient.SqlInternalConnection.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, Boolean shouldCacheForAlwaysEncrypted)
                    : в 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()
                    : в MediaPlanner.DataAccess.MediaPlanDBAccessor.ExecuteQuery(String queryText, SqlTransaction transaction, SqlConnection dbConnection, Dictionary`2 parameters)
                    : в MediaPlanner.DataAccess.MediaPlanDBAccessor.ExecuteInsertQuery(String tableName, Dictionary`2 parameters, Boolean openConnection)
                    : INSERT INTO mp_covenantees(name,contacts,users_id,modificationTime,agency,discount_type,discount_value,use_discount,ID_Number) VALUES (@name,@contacts,@users_id,GetDate(),@agency,@discount_type,@discount_value,@use_discount,@ID_Number)
                    : name=Азимут;contacts=;users_id=15;agency=;discount_type=Discount;discount_value=0;use_discount=False;ID_Number=;

Теоретически подобная ошибка может появляться с любым другим действием при обращении к базе данных.

Причем, если создать контрагента прямым запросом из SQL Server Management Studio, запрос выполняется без ошибок и контрагент создается.

Проблема решается путем включения параметра "Прерывание арифметических действий" или в старых версиях называется "Прерывание при делении на ноль".

На базе данных выполняется скрипт "alter database "DB_NAME" set arithabort on" для включения этого параметра.
После чего, создание, редактирование и удаление контрагентов стало выполняться успешно из Медиапланера и без ошибок.

Add picture from clipboard (Maximum size: 742 MB)