KB4528067 — POPRAWKA: Błąd 8959 może wystąpić na stronie IAM podczas wykonywania zapytań sys.dm_db_index_physical_stats względem tabeli magazynu kolumn partycjonowanych po przełączeniu partycji w programie SQL Server

Dotyczy
SQL Server 2016 Service Pack 2 SQL Server 2016 Developer - duplicate (do not use) SQL Server 2016 Enterprise - duplicate (do not use) SQL Server 2016 Enterprise Core - duplicate (do not use) SQL Server 2016 Standard - duplicate (do not use) SQL Server 2017 on Windows SQL Server 2019 on Windows

Objawy

Załóżmy, że masz podzieloną na partycje tabelę z indeksem CCI (Clustered Columnstore Index) w programie Microsoft SQL Server. Po uruchomieniu instrukcji SELECT w dynamicznym widoku zarządzania (DMV)sys.dm_db_index_physical_stats względem tabeli może zostać wyświetlony komunikat o błędzie podobny do następującego na stronie Mapa alokacji indeksu (IAM) po przełączeniu partycji:

Komunikat o błędzie 8959, Poziom 16, Stan 1, Numer wiersza

* Błąd tabeli: IAM page(1:361) dla identyfikatora obiektu ObjectID, identyfikatora indeksu IndexID, identyfikatora partycji PartitionID, identyfikatora jednostki alokacji UnitID (typ danych w wierszu) jest połączony w łańcuchu IAM dla identyfikatora obiektu ObjectID, identyfikatora indeksu IndexID, identyfikatora partycji PartitionID, identyfikatora jednostki alokacji UnitID (typ danych w wierszu) według strony (0:0).

Stan

Firma Microsoft potwierdziła, że jest to problem dotyczący produktów firmy Microsoft wymienionych w sekcji „Dotyczy”.

Rozwiązanie

Ten problem został rozwiązany w następujących aktualizacjach zbiorczych dla programu SQL Server:

Informacje o aktualizacjach zbiorczych dla programu SQL Server:

Każda nowa aktualizacja zbiorcza programu SQL Server zawiera wszystkie poprawki i poprawki zabezpieczeń, które zostały uwzględnione w poprzedniej aktualizacji skumulowanej. Sprawdź najnowsze aktualizacje zbiorcze dla programu SQL Server:

Więcej informacji

Przyczyną tego problemu jest to, że po wykonaniu przełączania partycji tabeli Columnstore i jeśli w partycji źródłowej istnieje jakikolwiek magazyn różnicowy reliktu, ten relikt nie zostanie przełączony na partycję docelową, co powoduje błąd niezgodności strony IAM. Możesz uruchomić "sys.dm_db_column_store_row_group_physical_stats", aby poznać szczegółowy stan grup wierszy (w tym relikt) dotyczący indeksu magazynu kolumn.

Obejście

Problem zniknął po pewnym czasie, gdy tło Tuple Mover zniszczyło deltastore nagrobka.

Aby obejść ten problem, możesz natychmiast usunąć ten relikt deltastore, aby uniknąć błędu, uruchamiając "ALTER INDEX ... REORGANIZUJ" jeden lub więcej razy.

Źródła informacji

Dowiedz się więcej o terminologii używanej przez firmę Microsoft do opisywania aktualizacji oprogramowania.