Страницы

Поиск по вопросам

воскресенье, 26 января 2020 г.

Ошибка с транзакциями Entity Framework (MSSQL 2008)

#c_sharp #entity_framework #sql_server


Периодически получаю ошибку при работе с файлами из базы. Используется Entity Framework,
на базе включён Filestream который и используется для хранения файлов. Не могу понять
почему вылетает эта ошибка: 

The transaction has been stopped because it conflicted with the execution of a FILESTREAM
close operation using the same transaction. The transaction will be rolled back.

Может кто видел подобную ошибку и как то боролся с ней?!

Обычно вылетает на commit или SaveChanges

В профилировщике SQL я обнаружил следующие записи :
Первая ошибка:
        2013-06-26 09:44:00.74 spid10s     Error: 3910, Severity: 16, State: 1.
        2013-06-26 09:44:00.74 spid10s     Transaction context in use by another session

Она относится к базе master
Остальные ошибки в моей базе.
После этого начинают валятся две ошибки:
    This operation conflicts with another pending operation on this transaction.
The operation failed.
    This operation conflicts with another pending operation on this transaction.
The operation failed.
И в конце ещё одна ошибка:
The transaction has been stopped because it conflicted with the execution of a FILESTREAM
close operation using the same transaction.  The transaction will be rolled back.


Совсем недавно обнаружил, что ошибка выпадает только тогда когда не выполнен следующий
запрос, при этом для этого запроса в профилировщике в столбце DataBaseName='master'.
Вот этот запрос:
UPDATE [Docs].[dbo].[Files] SET [file_body] = [file_body].NewFilestreamValue () WHERE
[file_body].RowGuid () = @hint OPTION (MAXDOP 1)

Я не нашёл что делает функция NewFilestreamValue() и где про неё можно почитать,
возможно она даст разгадку    


Ответы

Ответ 1



Все, я понял. Сталкивался с подобной проблемой. Это баг микрософта. У Stream, даже при включении в блок using, проблемы с Dispose. Необходимо руками удалять. Попробуйте. Вот, например, описание проблемы: Understanding Streams and their lifetime (Flush, Dispose, Close).

Ответ 2



Насколько я помню, это ошибка .NET и она лечится патчем KB2255379

Комментариев нет:

Отправить комментарий