Bei Microsoft anmelden
Melden Sie sich an, oder erstellen Sie ein Konto.
Hallo,
Wählen Sie ein anderes Konto aus.
Sie haben mehrere Konten.
Wählen Sie das Konto aus, mit dem Sie sich anmelden möchten.

Problembeschreibung

Angenommen, Sie verwenden Microsoft SQL Server 2016 oder 2017. Wenn Sie speicheroptimierte Datentransaktionen mithilfe speicheroptimierter Tabellenvariablen mit der where exists-Anweisung verarbeiten, erhalten Sie möglicherweise ein falsches Ergebnis.

Beispiel:

Schritt 1: Erstellen sie eine speicheroptimierte Datenbank und Tabelle.

Demo zum Erstellen einer DATENBANK

ALTER DATABASE-Demo HINZUFÜGEN VON FILEGROUP demo_mod CONTAINS MEMORY_OPTIMIZED_DATA 

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

Demo verwenden

Gehen

CREATE TYPE dbo. IN_MEMORY_TABLE_TYPE AS TABLE

( source_col INT NULL,

target_col INT nicht NULL

INDEX ix_InMemoryTable NONCLUSTERED (target_col)

) WITH (MEMORY_OPTIMIZED = ON)

GEHEN

Schritt 2: Einfügen von Daten und Aktualisieren von Daten.

DECLARE @t dbo. IN_MEMORY_TABLE_TYPE

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

Wählen Sie * aus @t

UPDATE r1 SET target_col = -1 FROM @t r1

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

SELECT * FROM @t

GEHEN

Schritt 3: Überprüfen Sie die Ergebnisse.

Tatsächliche Ergebnisse: Nicht alle Zeilen der Tabellenvariablen @t aktualisiert werden.

source_col | target_col

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

10 | -1

0 | 0

Die erwarteten Ergebnisse: Alle Zeilen sollten aktualisiert werden, um target_col = -1 zu erhalten.

source_col | target_col

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

10 | -1

0 | -1.

Lösung

Dieses Problem wurde in den folgenden kumulativen Updates für SQL Server behoben:

      Kumulatives Update 1 für SQL Server 2017 

      Kumulatives Update 5 für SQL Server 2016 SP1

Jedes neue kumulative Update für SQL Server enthält alle Hotfixes und alle Sicherheitsfixes, die im vorherigen kumulativen Update enthalten waren. Sehen Sie sich die neuesten kumulativen Updates für SQL Server an:

Neuestes kumulatives Update für SQL Server 2017

Neueste kumulative Updates für SQL Server 2016

Status

Microsoft hat bestätigt, dass es sich hierbei um ein Problem bei den in diesem Artikel genannten Microsoft-Produkten handelt.

Informationsquellen

Erfahren Sie mehr über die Terminologie, die Microsoft zum Beschreiben von Softwareupdates verwendet.

Benötigen Sie weitere Hilfe?

Möchten Sie weitere Optionen?

Erkunden Sie die Abonnementvorteile, durchsuchen Sie Trainingskurse, erfahren Sie, wie Sie Ihr Gerät schützen und vieles mehr.

In den Communities können Sie Fragen stellen und beantworten, Feedback geben und von Experten mit umfassendem Wissen hören.

War diese Information hilfreich?

Wie zufrieden sind Sie mit der Sprachqualität?
Was hat Ihre Erfahrung beeinflusst?
Wenn Sie auf "Absenden" klicken, wird Ihr Feedback zur Verbesserung von Produkten und Diensten von Microsoft verwendet. Ihr IT-Administrator kann diese Daten sammeln. Datenschutzbestimmungen.

Vielen Dank für Ihr Feedback!

×