Проблемы
При многократном выполнении Microsoft SQL Server хранимой процедуры, которая выполняет указанные ниже действия, может возникнуть ошибка утверждения.
-
Принимает в качестве аргумента большой объект (например, varchar (max) или varbinary (max), а также
-
Создает временную таблицу, которая ограничивается выполнением процедуры, и
-
В временной таблице используется аргумент "крупный объект".
В журнале ошибок SQL Server может быть обнаружена ошибка утверждения, напоминающая следующее:
ОшибкаSPID даты и времени: 17065, уровень серьезности: 16, состояние: 1.
Дата/время SPID SQL Server assertion: file: FilePath \имя_файла, Line = LineNumber не удалось утвердить = "fFalse" попытался получить доступ к дескриптору BLOB с истекшим сроком действия (1). Эта ошибка может быть связана со временем. Если ошибка не исчезнет после повторного выполнения инструкции, используйте DBCC CHECKDB, чтобы проверить базу данных на наличие структурной целостности, или перезапустите сервер, чтобы убедиться в том, что структуры данных в памяти не повреждены.
Ошибка SPID даты и времени : 3624, уровень серьезности: 20, состояние: 1.
Date/Time Идентификатор SPID для даты и времени не прошел проверку системного утверждения. Подробности см. в журнале ошибок SQL Server. Как правило, сбой утверждения вызывается из-за ошибки программного обеспечения или повреждения данных. Чтобы проверить, не повреждена ли база данных, попробуйте выполнить команду DBCC CHECKDB. Если вы согласились отправлять дампы в Microsoft во время установки, мини-дамп будет отправлен в корпорацию Майкрософт. Обновление может быть выпущено корпорацией Майкрософт в новейшем пакете обновления или в виде исправления из службы технической поддержки.
Причина
В SQL Server есть внутренняя логика для отключения кэширования запросов, ссылающихся на большие объекты, чтобы последующие выполнения не ссылались на эти LOB (которые были созданы во время предыдущих запусков и, следовательно, недопустимы для последующих запусков). Эта логика не обрабатывала случай разрешения отложенных имен (DNR) во временных таблицах, из-за которых кэшируются эти планы. Временные таблицы с областью загружаются очень ресурсоемки, и SQL Server кэширует их для повторного использования при последующих выполнениях. Это предотвращает повторную компиляцию подобных запросов из-за изменений схемы.
Дополнительные сведения о отложенном разрешении имен.
Решение
Эта проблема исправлена в перечисленных ниже накопительных обновлениях для SQL Server.
Накопительное обновление 8 для SQL Server 2016 с пакетом обновления 1 (SP1)
Накопительное обновление 4 для SQL Server 2017
Накопительное обновление 10 для SQL Server 2014 с пакетом обновления 2
Все новые накопительные обновления для SQL Server содержат все исправления и исправления для системы безопасности, описанные в предыдущей сборке. Ознакомьтесь со статьей последнего накопительного обновления для SQL Server:
Последнее накопительное обновление для SQL Server 2016
Последнее накопительное обновление для SQL Server 2017
последние накопительные обновления для SQL Server 2014
Статус
Корпорация Майкрософт подтверждает наличие этой проблемы в своих продуктах, которые перечислены в разделе "Применяется к".
Ссылки
Ознакомьтесь с терминологией , которую корпорация Майкрософт использует для описания обновлений программного обеспечения.