Symptomy
Rozpatrzmy następujący scenariusz:
-
Załóżmy, że masz podzielone na partycje tabele w programie Microsoft SQL Server i są one częścią funkcji przechwytywania danych change (CDC) lub replikacji transakcyjnej. Partycja jest przełączana lub wyłączana z tych tabel.
-
Po przełączeniu partycji podczas wykonywania operacji języka manipulacji danymi (DML) można zauważyć, że występuje EXCEPTION_ACCESS_VIOLATION i jest generowany plik zrzutu pamięci.
Date/Time ***Stack Dump being sent to FilePath\FileName
Date/Time SqlDumpExceptionHandler: ProcessID generated fatal exception c0000005 EXCEPTION_ACCESS_VIOLATION. SQL Server kończy ten proces. Data/godzina * ******** Data/Godzina * Data/Godzina * BEGIN STACK DUMP: Date/Time * Date/Time * Date/Time * Date/Time * Date/Time * Exception Address = 000007FEE724BD80 Module(sqllang+00000000015BBD80) Date/Time * Exception Code = c0000005 EXCEPTION_ACCESS_VIOLATION Date/Time * Naruszenie zasad dostępu wystąpiło w adresie do odczytu 00000000000002AData/godzina * Bufor wejściowy 70 bajtów data/godzina * sys.sp_MScdc_capture_job data/godzina *Date/Time ***Stack Dump being sent to FilePath\FileName
Date/Time SqlDumpExceptionHandler: Process PID generated fatal exception c0000005 EXCEPTION_ACCESS_VIOLATION. SQL Server kończy ten proces. Data/godzina * ************ Data/godzina * Data/godzina * BEGIN STACK DUMP: Date/Time * Date/TimeSPID Date/Time * Date/Time * Date/Time * Exception Address = 000007FEE9D26640 Module(sqllang+0000000001586640) Date/Time * Exception Code = c0000005 EXCEPTION_ACCESS_VIOLATION Data/godzina * Wystąpiło naruszenie zasad dostępu do odczytu 00000000000002AData/godzina * Bufor wejściowy 109 bajtów - Data/godzina * 16 00 00 00 12 00 00 00 00 02 00 00 00 00 00 00Data// 00 Czas * s p _ r e p 01 00 00 00 0b 00 73 00 70 00 5f 00 72 00 65 00 70 00 Data/Godzina * l c m d s & ô 6c 00 63 00 6d 00 00 64 00 73 00 00 00 00 00 26 04 04 f4 Data/godzina * & & ź 01 00 00 00 00 00 26 04 04 00 00 00 00 00 00 26 04 04 ff Data/Godzina * owania ¥ & ff ff ff 00 00 a5 0a 00 00 00 00 26 04 04 8f 13 00 Data/Godzina * & & } 00 00 00 26 04 04 00 00 00 00 00 00 26 04 04 20 a1 07 Data/godzina * 00-
Jeśli uruchomisz poniższe zapytanie dla tabeli docelowej, możesz zauważyć, że wartość is_replicated kolumny zostanie oznaczona jako "1" dla indeksu niegrupowanego, który jest nieprawidłowy.
select index_id, partition_number, * from sys.system_internals_partition_columns pc with(nolock)
JOIN sys.partitions p with(nolock)
ON p.partition_id = pc.partition_id
where p.object_id = object_id ('PartitionTable')
order by 2
Rozwiązanie
Ten problem został rozwiązany w następujących aktualizacjach zbiorczych dla SQL Server:
Aktualizacja zbiorcza 1 dla SQL Server 2017
Każda nowa aktualizacja zbiorcza dla SQL Server zawiera wszystkie poprawki i wszystkie poprawki zabezpieczeń, które zostały uwzględnione w poprzedniej aktualizacji zbiorczej. Zapoznaj się z najnowszymi aktualizacjami zbiorczymi dla SQL Server:
Najnowsza aktualizacja zbiorcza dla SQL Server 2017
Stan
Firma Microsoft potwierdziła, że jest to problem w produktach firmy Microsoft wymienionych w sekcji "Dotyczy".
Informacje
Dowiedz się więcej o terminologiiużywanej przez firmę Microsoft do opisywania aktualizacji oprogramowania.