Проблемы
Рассмотрим следующий сценарий.
-
Предположим, что у вас есть секционированные таблицы в Microsoft SQL Server и они являются частью системы отслеживания измененных данных (CDC) или репликации транзакций. Вы переключаете или выключаете секции из этих таблиц.
-
После переключения секций при выполнении операций языка обработки данных (DML) вы можете заметить, что происходит EXCEPTION_ACCESS_VIOLATION и создается файл дампа памяти.
Дата и время ***Дамп стека, отправляемый в FilePath\FileNameDate/Time SqlDumpExceptionHandler: Process PROCESSID создал неустранимое исключение c0000005 EXCEPTION_ACCESS_VIOLATION. SQL Server этот процесс завершается.Дата/время * ***Дата/время * Дата и время * Дата и время * BEGIN STACK DUMP:Date/Time * Date/Time * Date/Time *Date/Time * Date/Time * Date/Time * Exception Address = 000007FEE724BD80 Module(sqllang+00000000015BBD80)Date/Time * Exception Code = c0000005 EXCEPTION_ACCESS_VIOLATIONДата и время * Нарушение доступа произошло при чтении адреса 000000000000002Aдаты и времени * входного буфера 70 байт даты и времени * sys.sp_MScdc_capture_jobдаты и времени *
Дата и время ***Дамп стека, отправляемый в FilePath\FileNameDate/Time SqlDumpExceptionHandler: процесс PID создал неустранимое исключение c0000005 EXCEPTION_ACCESS_VIOLATION. SQL Server этот процесс завершается.Дата/время * ***Date/Time *Date/Time * BEGIN STACK DUMP:Date/Time * Date/TimeSPIDDate/Time *Date/Time *Date/Time *Date/Time * Exception Address = 000007FEE9D26640 Module(sqllang+0000000001586640)Date/Time * Exception Code = c0000005 EXCEPTION_ACCESS_VIOLATIONДата и время * Произошло нарушение доступа: адрес 00000000000000002AДата и время * Входной буфер 109 байт -Дата/время * 16 00 00 00 00 00 00 00 00 02 00 00 00 00 Дата/Time * s p _ r e p 01 00 00 00 0b 00 73 00 70 00 5f 00 72 00 65 00 70 00Дата/Время * l c m d s & ô 6c 00 63 00 6d 00 6d 00 64 00 73 00 00 00 00 00 26 04 04 f4Дата и время * & & момент 1 00 00 00 00 00 00 26 04 04 00 00 00 00 00 00 00 26 04 04 ffДата и время * Ляй ¥ & ff ff 00 00 a5 0a 00 00 00 00 00 26 04 04 8f 13 00Дата и время * & & 00 00 00 00 26 04 04 00 00 00 00 00 26 04 04 20 a1 07Дата и время * 00
-
При выполнении следующего запроса к целевой таблице вы можете заметить, что значение столбца is_replicated будет помечено как "1" для некластиционного индекса, что неправильно.
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
Решение
Эта проблема устранена в следующих накопительных обновлениях для SQL Server:
Накопительный пакет обновления 1 для SQL Server 2017
Накопительный пакет обновления 5 для SQL Server 2016 с пакетом обновления 1 (SP1)
Накопительный пакет обновления 8 для SQL Server 2014 с пакетом обновления 2 (SP2)
Каждое новое накопительное обновление для SQL Server содержит все исправления и все исправления для системы безопасности, которые были включены в предыдущее накопительное обновление. Ознакомьтесь с последними накопительными обновлениями для SQL Server:
Последнее накопительное обновление для SQL Server 2017
Статус
Корпорация Майкрософт подтверждает наличие этой проблемы в своих продуктах, которые перечислены в разделе "Применяется к".
Ссылки
Сведения о терминологии, которую корпорация Майкрософт использует для описания обновлений программного обеспечения.