Symptomy
Załóżmy, że istnieje tabela zawierająca klastrowany indeks magazynu kolumn w programie Microsoft SQL Server 2014. Kwerenda DDL jest uruchamiana w tabeli w celu zmiany typu danych istniejącej kolumny. Na przykład po zaktualizowaniu typu danych Column_1 Table_1 z VARCHAR (499) do NVARCHAR (500), uruchamiając następujące polecenie:
ALTER TABLE Table_1 ALTER COLUMN Column_1 NVARCHAR(500) NOT NULL
W tej sytuacji Wystąpił błąd wielokrotnego potwierdzenia i jest wyświetlany następujący komunikat o błędzie:
Lokalizacja: <ścieżka pliku> \Xmcolenc.inl: 413Expression: PF_CURRENT_STATUS = = PFS_OK (w XMColumnEncoder<unsigned *>:: EncodeValueForSecondary) SPID: <identyfikator procesu>ID procesu: <Identyfikatorprocesu>. : 0x0Location. Jeżeli Identyfikator procesu <> <: HR: 0x0.
Ponadto w dzienniku błędów programu SQL Server są rejestrowane wiele plików zrzutów pamięci, które przypominają następujące komunikaty o błędach:
<Date Time> identyfikator SPID<ID> * * * zrzut stosu wysyłany do <Nazwa dysku>: \Program Files\Microsoft SQL Server\MSSQL12. SQL2014\MSSQL\LOG\SQLDump0002.txt<Data godzina> identyfikator SPID<ID> * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * (<) * * * * * * * * * * (data Date Timegodzina )> identyfikator SPID<ID> * <date Time> identyfikatorspid< identyfikatorze> <date IDTime> Identyfikator SPID<ID > * <Date Time> identyfikator SPID<ID > * lokalizacja: <ścieżka pliku> \xmcolenc.inl: 413<data godzina> identyfikator spid<ID > * expression: PF_CURRENT_STATUS = = PFS_OK Data godzina< Identyfikator SPID> ID < * (w XMColumnEncoder> unsignd char *< :: EncodeValueForSecondary)> date Time<identyfikator SPID > ID< * identyfikator procesu 60 IDIDID : 3680<Date Time> spid identyfikator<ID> * opis: HR: 0x0<Date Time> identyfikator SPID<identyfikator> * <Date Time 136 > identyfikator SPID<ID>. w celu Date Timeprzekroczenia limitu czasu <ALTER COLUMN. ID
Rozwiązanie
Po zastosowaniu tej poprawki po niepowodzenia kwerendy DDL może zostać wyświetlony następujący nowy komunikat o błędzie:
Wykonywanie instrukcji ALTER TABLE nie powiodło się, ponieważ słownik pomocniczy osiągnął limit maksymalnego rozmiaru. Uwzględnij Usuwanie indeksu magazynu kolumn, zmieniając kolumnę, a następnie tworząc nowy indeks magazynu kolumn
Ta poprawka zapobiega również generowaniu plików zrzutów pamięci w dzienniku błędów programu SQL Server. problem został po raz pierwszy rozwiązany w następujących zbiorczych aktualizacjach 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:
Stan
Firma Microsoft potwierdziła, że jest to problem występujący w produktach firmy Microsoft wymienionych w sekcji "dotyczy".