Platí pro
SQL 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)

Příznaky

Předpokládejme, že používáte Microsoft SQL Server 2016 nebo 2017. Při zpracování transakcí dat optimalizovaných pro paměť pomocí proměnných tabulky optimalizovaných pro paměť pomocí příkazu where exists může dojít k nesprávnému výsledku.

Příklad:

Krok 1: Vytvoření databáze a tabulky optimalizované pro paměť

Ukázka vytvoření databáze

ALTER DATABASE demo ADD FILEGROUP demo_mod CONTAINS MEMORY_OPTIMIZED_DATA 

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

Použití ukázky

Jít

CREATE TYPE dbo. IN_MEMORY_TABLE_TYPE JAKO TABULKU

( source_col INT NULL,

target_col INT není NULL

INDEX ix_InMemoryTable NONCLUSTERED (target_col)

) WITH (MEMORY_OPTIMIZED = ZAPNUTO)

JÍT

Krok 2: Vložení dat a aktualizace dat

DEKLARUJTE @t dbo. IN_MEMORY_TABLE_TYPE

VLOŽIT @t ( source_col, target_col ) HODNOTY (10, 0),(0, 0)

select * from @t

UPDATE r1 SET target_col = -1 FROM @t r1

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

SELECT * FROM @t

JÍT

Krok 3: Zkontrolujte výsledky.

Skutečné výsledky: Ne všechny řádky proměnné tabulky @t aktualizovat.

source_col | target_col

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

10 | -1

0 | 0

Očekávané výsledky: Všechny řádky by se měly aktualizovat tak, aby měly target_col = -1.

source_col | target_col

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

10 | -1

0 | -1.

Řešení

Tento problém je opravený v následujících kumulativních aktualizacích pro SQL Server:

      Kumulativní aktualizace 1 pro SQL Server 2017 

      Kumulativní aktualizace 5 pro SQL Server 2016 SP1

Každá nová kumulativní aktualizace pro SQL Server obsahuje všechny opravy hotfix a všechny opravy zabezpečení, které byly součástí předchozí kumulativní aktualizace. Podívejte se na nejnovější kumulativní aktualizace pro SQL Server:

Nejnovější kumulativní aktualizace pro SQL Server 2017

Nejnovější kumulativní aktualizace pro SQL Server 2016

Stav

Společnost Microsoft potvrzuje, že se jedná o problém v produktech této společnosti, které jsou uvedeny v části Informace v tomto článku jsou určeny pro produkt.

Odkazy

Seznamte se s terminologií, kterou Microsoft používá k popisu aktualizací softwaru.

Potřebujete další pomoc?

Chcete další možnosti?

Prozkoumejte výhody předplatného, projděte si školicí kurzy, zjistěte, jak zabezpečit své zařízení a mnohem více.