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