У меня есть приложение и SQL Сервер, к которому имеют доступ 6 пользователей. Иногда они получают ошибку DBConcurrencyException
. Иногда я имею в виду, что я получаю копию их ошибки максимум несколько раз в неделю - и обычно не одним и тем же пользователем. Я решил, что это не потому, что другой пользователь также обновил ту же «запись». У меня есть ощущение, что это как-то связано с преобразованием десятичных дробей? между сервером и рабочей станцией пользователей. Однако я не могу повторить ошибку.
Я попытался обновить запись в приложении одновременно с сервером. Что бы ни заканчивалось первым, побеждает. Но нет ошибки. Поскольку я не могу воспроизвести эту ошибку и не знаю, как ее «заставить», я не могу найти аргументацию или решение.
Итак, 2 вопроса:
Является ли мое мнение вероятным, что ошибка связана с преобразованием данных? Если да, как я могу проверить и / или исправить эту проблему?
Есть ли способ, которым я могу форсировать или подделать исключение, чтобы найти правильное решение? Я хотел бы знать точно, ПОЧЕМУ ошибка происходит, прежде чем я начну пытаться заставить обновления на сервер.
Не уверен, какой код будет полезен здесь, но я использую SqlDataAdapter.Update
для обновления сервера с изменениями.
Запрос на обновление сборки:
SQLcmd = New SqlCommand("
UPDATE [ACL].data_Demog_BGL SET
[Offline] = @Offline
,[ID_BGL_Assay] = @Assay
,[Barcode_Number] = @BarNum
,[Result] = @Result
,[Result_Type] = @RType
,[ID_Test_Outcome] = @TOutcome
,[CLIR_Request] = @CReq
,[CLIR_Entry] = @CEntry
,[Tasklist] = @Tasklist
,[Sequence] = @Seq
,[CLIR_Date] = @CDate
WHERE ID_Demog_BGL = @ID
", Vars.sqlConnACL)
With SQLcmd.Parameters
.Add("@Offline", SqlDbType.Bit, 0, "Offline")
.Add("@Assay", SqlDbType.Int, 0, "ID_BGL_Assay")
.Add("@BarNum", SqlDbType.NVarChar, 255, "Barcode_Number")
.Add("@Result", SqlDbType.NVarChar, 255, "Result")
.Add("@RType", SqlDbType.NVarChar, 255, "Result_Type")
.Add("@TOutcome", SqlDbType.Int, 0, "ID_Test_Outcome")
.Add("@CReq", SqlDbType.Bit, 0, "CLIR_Request")
.Add("@CEntry", SqlDbType.NVarChar, 255, "CLIR_Entry")
.Add("@Tasklist", SqlDbType.NVarChar, 255, "Tasklist")
.Add("@Seq", SqlDbType.NVarChar, 255, "Sequence")
.Add("@CDate", SqlDbType.Date, 0, "CLIR_Date")
.Add("@ID", SqlDbType.Int, 0, "ID_Demog_BGL")
End With
da_BGLAssay.UpdateCommand = SQLcmd
и ...
Me.Validate()
bsBGL.EndEdit()
da_BGLAssay.Update(dt_BGLAssay)
da_BGLAssay.Fill(dt_BGLAssay)