Sign in with Microsoft
New to Microsoft? Create an account.

Проблемы

Предположим, что вы используете Microsoft SQL Server 2016 или 2017. При обработке транзакций с оптимизированными памятью с использованием переменных таблицы, оптимизированных в памяти, с помощью оператора WHERE EXISTS может возникнуть неверный результат.

Пример:

Step1: создание базы данных и таблицы, оптимизированной для памяти.

Демонстрация создания базы данных

Инструкция ALTER DATABASE Demo ADD FILEGROUP demo_mod CONTAINS MEMORY_OPTIMIZED_DATA 

Инструкция ALTER DATABASE Demo ADD FILE (Name = "demo_mod1", filename = "C:\DATA\ demo_mod1") в ФАЙЛовую группу demo_mod 

Использование демона

Щелкните

Создайте тип dbo. IN_MEMORY_TABLE_TYPE В ВИДЕ ТАБЛИЦЫ

(source_col INT NULL

target_col INT NOT NULL

Некластеризованный индекс ix_InMemoryTable (target_col)

) С (MEMORY_OPTIMIZED = ON)

Щелкните

Step2: Вставка данных и обновление данных.

ОБЪЯВИТе @t dbo. IN_MEMORY_TABLE_TYPE

Вставка значений @t (source_col, target_col) (10, 0), (0,0), (0, 0)

SELECT * FROM @t

Обновление R1 SET target_col =-1 от @t R1

ГДЕ EXISTs (выберите * FROM @t R2, где r2.source_col > 0)

SELECT * FROM @t

Щелкните

Step3: результаты проверки.

Фактические результаты: не все строки табличной переменной @t обновлены.

source_col | target_col

----------------------

10 | -1

0 | до

Ожидаемые результаты: все строки должны быть обновлены до target_col =-1.

source_col | target_col

----------------------

10 | -1

0 | 1,1.

Решение

Эта проблема исправлена в перечисленных ниже накопительных обновлениях для SQL Server.

      Накопительное обновление 1 для SQL Server 2017 

      Накопительное обновление 5 для SQL Server 2016 с пакетом обновления 1 (SP1)

Все новые накопительные обновления для SQL Server содержат все исправления и все исправления для системы безопасности, которые были включены в предыдущий накопительный пакет обновления. Ознакомьтесь с самыми последними накопительными обновлениями для SQL Server.

Последнее накопительное обновление для SQL Server 2017

Последние накопительные обновления для SQL Server 2016

Статус

Корпорация Майкрософт подтверждает наличие этой проблемы в своих продуктах, которые перечислены в разделе "Применяется к".

Ссылки

Ознакомьтесь с терминологией, которую корпорация Майкрософт использует для описания обновлений программного обеспечения.

Нужна дополнительная помощь?

Совершенствование навыков
Перейти к обучению
Первоочередный доступ к новым возможностям
Присоединение к программе предварительной оценки Майкрософт

Были ли сведения полезными?

Насколько вы удовлетворены качеством перевода?
Что повлияло на вашу оценку?

Спасибо за ваш отзыв!

×