KB3168793 — Poprawka: nie można utworzyć lub usunąć tabeli lub indeksu, gdy inna transakcja DDL jest uruchomiona w tej samej bazie danych w programie SQL Server 2016

Pracuj w dowolnym miejscu i na dowolnym urządzeniu dzięki platformie Microsoft 365

Uaktualnij program Microsoft 365, aby pracować w dowolnym miejscu z najnowszymi funkcjami i aktualizacjami.

Zaktualizuj teraz

Symptomy

Podczas wykonywania operacji DDL, takich jak CREATE INDEX lub TRUNCATE TABLE w programie SQL Server 2016, operacje mogą być blokowane, jeśli w tej samej bazie danych działa inna transakcja DDL.

Rozwiązanie

Problem został po raz pierwszy rozwiązany w następującej zbiorczej aktualizacji programu SQL Server:

Każda nowa Zbiorcza aktualizacja programu SQL Server zawiera wszystkie poprawki i wszystkie poprawki zabezpieczeń uwzględnione w poprzedniej aktualizacji zbiorczej. Zalecamy pobranie i zainstalowanie najnowszych aktualizacji zbiorczych programu SQL Server:

Więcej informacji

Gdy kod DDL utworzy lub usunie tabelę lub indeks, musi ona wstawić lub usunąć identyfikator zestawu wierszy tabeli lub indeksu z sysrowsets, dla którego wymaga zablokowania wpisu w wierszu X na poziomie wiersza. Gdy jest to realizowane w ramach transakcji, blokada X będzie utrzymywana na czas trwania transakcji. Gdy aplikacja do przenoszenia spoin odnajdowa opróżnia bufory usuwania, potrzebna jest iteracja na sysrowsets , aby wykryć istniejące tabele lub indeksy. Aby odczytać wszystkie wiersze z sysrowsets musi być zablokowanie na poziomie wiersza w momencie zapisu. Proces wykrywania zostaje zatrzymany, gdy składnik przenoszenia spoiny znajdzie pierwszy zestaw wierszy, nad którym może pracować. W tym momencie program spoina krotek wykona rzeczywistą pracę w celu wyopróżniania buforu Delete, ale w celu upewnienia się, że odnaleziony zestaw wierszy jest nadal ważny, będzie przytrzymywać blokadę SCH-S we wszystkich zestawach wierszy, które zostaną wyliczone w trakcie procesu wykrywania do momentu zakończenia pracy.Sysrowsets jest uporządkowany według identyfikatora zestawu wierszy, więc może się zdarzyć, że przeskanowano wiele istniejących zestawów wierszy, dla których nie ma żadnej akcji, ale nadal znajduje się blokada SCH-S i przyjdzie do wpisu w Sysrowsets, dla którego nie można uzyskać blokady na poziomie wiersza, ponieważ jest on obecnie zmieniany przez długotrwałą transakcję, która zawiera blokadę X wiersza. W tym punkcie DDLs dotyczące zmiany identyfikatora zestawu wierszy są blokowane za blokadami SCH-S elementu przenoszenia spoin.

Stan

Firma Microsoft potwierdziła, że jest to problem występujący w produktach firmy Microsoft wymienionych w sekcji "dotyczy".

Informacje

Informacje o terminologii używanej przez firmę Microsoft do opisywania aktualizacji oprogramowania.

Potrzebna dalsza pomoc?

Rozwijaj swoje umiejętności
Poznaj szkolenia
Uzyskuj nowe funkcje w pierwszej kolejności
Dołącz do niejawnych testerów firmy Microsoft

Czy te informacje były pomocne?

Dziękujemy za opinię!

Dziękujemy za opinię! Wygląda na to, że połączenie Cię z jednym z naszych agentów pomocy technicznej pakietu Office może być pomocne.

×