KB3021757 – FIX: Doppelter Sequenzwert wird generiert, wenn Sie sp_sequence_get_range parallel zur Funktion NÄCHSTER WERT FÜR ausführen

Gilt für
SQL Server 2012 Enterprise SQL Server 2012 Developer SQL Server 2012 Standard SQL Server 2014 Developer - duplicate (do not use) SQL Server 2014 Enterprise - duplicate (do not use) SQL Server 2014 Standard - duplicate (do not use)

Symptome

Angenommen, Sie haben Sequenzobjekte in Microsoft SQL Server 2012 oder SQL Server 2014 definiert. Wenn Sie sp_sequence_get_range gespeicherten Systemprozeduren und die Funktion NEXT VALUE FOR parallel für dasselbe Sequenzobjekt ausführen (z. B. in verschiedenen gleichzeitigen Verbindungen oder in Multithreadanwendungen), wird ein doppelter Sequenzwert generiert.

Ursache

Dieses Problem tritt aufgrund einer Racebedingung für sp_sequence_get_range gespeicherten Systemprozeduren und der Funktion NEXT VALUE FOR auf, wenn sie im selben Sequenzobjekt parallel ausgeführt werden. Beide lesen und schreiben auf den aktuellen Wert des Sequenzgenerators. Es fehlt jedoch ein korrekter Synchronisierungsmechanismus zwischen ihnen.

Lösung

Informationen zum Service Pack

Installieren Sie Service Pack 1 für SQL Server 2014, um dieses Problem zu beheben.

Weitere Informationen zu SQL Server 2014 Service Pack 1 (SP1) finden Sie unter In SQL Server 2014 Service Pack 1 behobene Fehler.

Dieses Problem wurde erstmals im folgenden kumulativen Update von SQL Server behoben.

Kumulatives Update 6 für SQL Server 2014 /en-us/help/3031047

Kumulatives Update 4 für SQL Server 2012 SP2 /en-us/help/3007556

Informationen zu kumulativen Updates für SQL Server

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

      

Status

Microsoft hat bestätigt, dass dies ein Problem bei den Microsoft-Produkten ist, die im Abschnitt „Gilt für“ aufgeführt sind.