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)

Symptomer

Antag, at du bruger Microsoft SQL Server 2016 eller 2017. Når du behandler hukommelsesoptimerede datatransaktioner ved hjælp af hukommelsesoptimerede tabelvariabler med sætningen where exists , kan du få et forkert resultat.

For eksempel:

Trin1: Opret en hukommelsesoptimeret database og tabel.

Demo af Opret DATABASE

ALTER DATABASE demo ADD FILEGROUP demo_mod CONTAINS MEMORY_OPTIMIZED_DATA 

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

Brug demo

OPRET TYPE dbo. IN_MEMORY_TABLE_TYPE SOM TABEL

( source_col INT NULL,

target_col INT not NULL

INDEX ix_InMemoryTable NONCLUSTERED (target_col)

) MED (MEMORY_OPTIMIZED = TIL)

GO 

Trin2: Indsæt data, og opdater data.

ERKLÆRER @t dbo. IN_MEMORY_TABLE_TYPE

INDSÆT @t ( source_col, target_col ) VÆRDIER (10, 0),(0, 0)

vælg * fra @t

UPDATE r1 SET target_col = -1 FROM @t r1

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

SELECT * FROM @t

GO 

Trin3: Kontrollér resultaterne.

Faktiske resultater: Ikke alle rækker med tabelvariable @t blive opdateret.

source_col | target_col

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

10 | -1

0 | 0

De forventede resultater: Alle rækker skal opdateres, så de har target_col = -1.

source_col | target_col

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

10 | -1

0 | -1.

Løsning

Dette problem er rettet i følgende kumulative opdateringer til SQL Server:

      Samlet opdatering 1 til SQL Server 2017 

      Samlet opdatering 5 til SQL Server 2016 SP1

Hver ny samlet opdatering til SQL Server indeholder alle de hotfixes og alle de sikkerhedsrettelser, der var inkluderet i den tidligere akkumulerede opdatering. Se de seneste kumulative opdateringer til SQL Server:

Seneste akkumulerede opdatering til SQL Server 2017

Seneste kumulative opdateringer til SQL Server 2016

Status

Microsoft har bekræftet, at problemet findes i de Microsoft-produkter, der er angivet i afsnittet "Gælder for".

Referencer

Få mere at vide om den terminologi, som Microsoft bruger til at beskrive softwareopdateringer.

Har du brug for mere hjælp?

Vil du have flere indstillinger?

Udforsk abonnementsfordele, gennemse kurser, få mere at vide om, hvordan du sikrer din enhed og meget mere.