Проблема
Предположим, что у вас есть база данных с поддержкой FILESTREAM в экземпляре Microsoft SQL Server. Когда вы запускаете транзакцию и используете API .NET SqlFileStream для открытия файла filestream, задача может завершиться ошибкой и вызвать исключение из-за внешних факторов.
Если снова открыть файл с помощью SqlFileStream в рамках одной транзакции и фиксации, могут появись внутренние сообщения об ошибках, которые выглядят следующим образом:
Примечание
date time, spids, Unknown, Error: 5571<c/> Серьезность: 23<c/> State: 3.
date time, spids, Unknown, Internal FILESTREAM error: не удалось получить доступ к таблице сборки мусора.
При запуске dbcc checktable ("sys.filestream_tombstone_2073058421")может появилось следующее сообщение об ошибке:
Примечание
Msg 8951, Level 16, State 1, LineNumber
Ошибка таблицы: table dbcc checktable ('sys.filestream_tombstone_2073058421') ( IDNumber). Строка данных не содержит соответствующую строку индекса в индексе "FSTSNCIdx" (IDNumber). Возможные отсутствующие или недопустимые ключи для сопоставления строк индекса:
Решение
Исправление этой проблемы входит в следующие обновления для SQL Server:
Накопительный пакет обновления 13 для SQL Server 2017 г.
Накопительный пакет обновления 1 для SQL Server 2014 с пакетом обновления 3 (SP3)
Накопительный пакет обновления 15 для SQL Server 2014 с пакетом обновления 2 (SP2)
Сведения о сборках SQL Server
Каждая новая сборка для SQL Server содержит все исправления и исправления безопасности, которые были в предыдущей сборке. Рекомендуется установить последнюю сборку для своей версии SQL Server:
версии сборки SQL Server 2017 г.
версии сборки SQL Server 2014 г.
Временное решение
Чтобы обойти эту проблему, перестройте индекс базы данных с помощью команды DBCC CHECKTABLE .
Состояние
Корпорация Майкрософт подтвердила, что это проблема продуктов Microsoft, перечисленных в разделе «Относится к».
Ссылки
Сведения о стандартной терминологии, используемой корпорацией Майкрософт для описания обновлений программного обеспечения.