Проблемы
Предположим, что у вас есть база данных с изоляцией прочтения зафиксированных снимков (RCSI), которая включена с помощью параметра READ_COMMITTED_SNAPSHOT on в Microsoft SQL Server 2014. При доступе к оптимизированной для памяти таблице и переменной таблицы, оптимизированной для памяти, в той же инструкции, которая выходит за пределы пользовательской транзакции, операция может завершиться ошибкой. Кроме того, может появиться следующее сообщение об ошибке:
Сообщение 41359. Запрос, который обращается к оптимизированным в памяти таблицам с помощью уровня изоляции READ UNCOMMITTED, не может получить доступ к дисковой таблице, если параметр Database READ_COMMITTED_SNAPSHOT имеет значение ON. Предоставьте поддерживаемый уровень изоляции для таблицы, оптимизированной для памяти, с помощью табличной подсказки, например WITH (SNAPSHOT).
Решение
Эта проблема впервые устранена в следующем накопительном обновлении SQL Server.
Накопительное обновление 1 для SQL Server 2014 /en-us/help/2931693
Все новые накопительные обновления для SQL Server содержат все исправления и все исправления для системы безопасности, которые были включены в предыдущий накопительный пакет обновления. Ознакомьтесь с самыми последними накопительными обновлениями для SQL Server.
Обходное решение
Чтобы обойти эту проблему, используйте описанные ниже временные решения.
-
Используйте подсказку Table WITH (SNAPSHOT) с переменной table.
-
Установите для параметра база данных MEMORY_OPTIMIZED_ELEVATE_TO_SNAPSHOT значение Вкл.
Статус
Корпорация Майкрософт подтверждает наличие этой проблемы в своих продуктах, которые перечислены в разделе "Применяется к".