Symptome
Wenn Sie in SQL Server 2016 DDL-Vorgänge wie Index erstellen oder Tabelle abschneiden, werden die Vorgänge möglicherweise blockiert, wenn in derselben Datenbank eine andere DDL-Transaktion ausgeführt wird.
Lösung
Das Problem wurde zuerst im folgenden kumulativen Update von SQL Server behoben:
Empfehlung: Installieren Sie das neueste kumulative Update für SQL Server
Jedes neue kumulative Update für SQL Server enthält alle Hotfixes und alle Sicherheitsfixes, die im vorherigen kumulativen Update enthalten waren. Es wird empfohlen, die neuesten kumulativen Updates für SQL Server herunterzuladen und zu installieren:
Weitere Informationen
Wenn eine DDL eine Tabelle oder einen Index erstellt oder löscht, muss sie die Rowset-ID der Tabelle oder des Indexes aus Sysrowsets einfügen oder löschen, für die sie eine X-Sperre auf Zeilenebene für den Eintrag halten muss. Wenn dies innerhalb einer Transaktion erfolgt, wird die X-Sperre für die Dauer der Transaktion gehalten.
Wenn Tupel Mover löschbare Löschpuffer erkennt, muss es sysrowsets durchlaufen, um vorhandene Tabellen oder Indizes zu ermitteln. Um jede Zeile aus Sysrowsets zu lesen, muss er eine S-Sperre auf Zeilenebene für den Aktuell gelesenen Eintrag halten. Der Ermittlungsprozess wird beendet, wenn tupel mover das erste Rowset findet, an dem er arbeiten kann. An diesem Punkt führt Tupel Mover die eigentliche Arbeit aus, um den Löschpuffer zu leeren, aber um sicherzustellen, dass das ermittelte Rowset noch gültig ist, hält er eine SCH-S-Sperre für alle Rowsets, die es während des Ermittlungsprozesses ausgewertet hat, bis seine Arbeit abgeschlossen ist.
Sysrowsets wird nach der Rowset-ID sortiert. Daher kann es vorkommen, dass Tupel Mover mehrere vorhandene Rowsets gescannt hat, für die keine Aktion ausgeführt werden muss, aber weiterhin die SCH-S-Sperre hält und zu einem Eintrag in Sysrowsets gelangt, für den es keine S-Sperre auf Zeilenebene abrufen kann, da sie derzeit durch eine zeitintensive Transaktion geändert wird, die eine X-Sperre für die Zeile enthält. An diesem Punkt werden DDLs, die eine Änderung der Rowset-ID betreffen, hinter den SCH-S-Sperren von Tupel Mover blockiert.
Status
Microsoft hat bestätigt, dass dies ein Problem bei den Microsoft-Produkten ist, die im Abschnitt „Gilt für“ aufgeführt sind.
Referenzmaterial
Informieren Sie sich über die Terminologie, die Microsoft zum Beschreiben von Softwareupdates verwendet.