Applies ToSQL Server 2016 Service Pack 1 SQL Server 2016 Enterprise Core - duplicate (do not use) SQL Server 2016 Enterprise - duplicate (do not use) SQL Server 2016 Developer - duplicate (do not use) SQL Server 2016 Standard - duplicate (do not use) SQL Server 2017 on Windows (all editions)

Symptomy

Załóżmy, że używasz programu Microsoft SQL Server 2016 lub 2017. Podczas przetwarzania transakcji danych zoptymalizowanych pod kątem pamięci przy użyciu zmiennych tabel zoptymalizowanych pod kątem pamięci z instrukcją where exists może zostać zwrócony nieprawidłowy wynik.

Na przyk³ad:

Krok 1. Tworzenie bazy danych i tabeli zoptymalizowanej pod kątem pamięci.

Pokaz tworzenia bazy danych

POKAZ ALTER DATABASE ADD FILEGROUP demo_mod ZAWIERA MEMORY_OPTIMIZED_DATA 

ALTER DATABASE demo ADD FILE (name='demo_mod1', filename='C:\DATA\demo_mod1') TO FILEGROUP demo_mod 

Korzystanie z wersji demonstracyjnej

Przejdź

CREATE TYPE dbo. IN_MEMORY_TABLE_TYPE JAKO TABELA

( source_col INT NULL,

target_col INT not NULL

IX_INMEMORYTABLE INDEKSU BEZ LICENCJI (target_col)

) WITH (MEMORY_OPTIMIZED = ON)

PRZEJDŹ

Krok 2. Wstawianie danych i aktualizowanie danych.

ZADEKLARUJ @t dbo. IN_MEMORY_TABLE_TYPE

INSERT @t (source_col, target_col) VALUES (10, 0),(0, 0)

wybierz pozycję * z @t

UPDATE r1 SET target_col = -1 FROM @t r1

WHERE EXISTS (SELECT * FROM @t r2 WHERE r2.source_col > 0)

SELECT * FROM @t

PRZEJDŹ

Krok 3. Sprawdź wyniki.

Rzeczywiste wyniki: Nie wszystkie wiersze zmiennej tabeli @t zostaną zaktualizowane.

source_col | target_col

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

10 | -1

0 | 0

Oczekiwane wyniki: Wszystkie wiersze powinny zostać zaktualizowane, aby target_col = -1.

source_col | target_col

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

10 | -1

0 | -1.

Rozwiązanie

Ten problem został rozwiązany w następujących aktualizacjach zbiorczych dla SQL Server:

      Aktualizacja zbiorcza 1 dla SQL Server 2017 

      Aktualizacja zbiorcza 5 dla SQL Server 2016 z dodatkiem SP1

Każda nowa aktualizacja zbiorcza dla SQL Server zawiera wszystkie poprawki i wszystkie poprawki zabezpieczeń, które zostały uwzględnione w poprzedniej aktualizacji zbiorczej. Zapoznaj się z najnowszymi aktualizacjami zbiorczymi dla SQL Server:

Najnowsza aktualizacja zbiorcza dla SQL Server 2017

Najnowsze aktualizacje zbiorcze dla SQL Server 2016

Stan

Firma Microsoft potwierdziła, że jest to problem w produktach firmy Microsoft wymienionych w sekcji "Dotyczy".

Informacje

Dowiedz się więcej o terminologiiużywanej przez firmę Microsoft do opisywania aktualizacji oprogramowania.

Potrzebujesz dalszej pomocy?

Chcesz uzyskać więcej opcji?

Poznaj korzyści z subskrypcji, przeglądaj kursy szkoleniowe, dowiedz się, jak zabezpieczyć urządzenie i nie tylko.

Społeczności pomagają zadawać i odpowiadać na pytania, przekazywać opinie i słuchać ekspertów z bogatą wiedzą.