Проблема
Рассмотрим следующий сценарий.
- Предположим, что в Microsoft SQL Server есть секционированные таблицы и они являются частью процесса записи данных об изменениях (CDC) или репликации транзакций. Вы включаете или выключаете раздел из этих таблиц.
- После переключения разделов при выполнении операций языка обработки данных (DML) вы можете заметить, что происходит EXCEPTION_ACCESS_VIOLATION и создается файл дампа памяти.
Примечание
Дата и время ***Дамп стека, отправляемый в FilePath\FileName
Дата и время SqlDumpExceptionHandler: ProcessID создал неустранимое исключение c0000005 EXCEPTION_ACCESS_VIOLATION. SQL Server завершает этот процесс.
Дата и время * *******************************************************************************
Дата и время *
Дата и время * НАЧАЛО ДАМПА СТЕКА:
Дата и время *
Дата и время *
Дата и время *
Дата и время *
Дата и время * Адрес исключения = 000007FEE724BD80 Module(sqllang+0000000015BBD80)
Дата и время * Код исключения = c0000005 EXCEPTION_ACCESS_VIOLATION
Дата и время * Произошло нарушение прав доступа при чтении адреса 000000000000002A
Дата и время * Входной буфер: 70 байт
Дата и время * sys.sp_MScdc_capture_job
Дата и время *
Примечание
Дата и время ***Дамп стека, отправляемый в FilePath\FileName
Дата и время SqlDumpExceptionHandler: процесс PID создал неустранимое исключение c0000005 EXCEPTION_ACCESS_VIOLATION. SQL Server завершает этот процесс.
Дата и время * *******************************************************************************
Дата и время *
Дата и время * НАЧАЛО ДАМПА СТЕКА:
Дата и время * Date/TimeSPID
Дата и время *
Дата и время *
Дата и время * Адрес исключения = 000007FEE9D26640 Module(sqllang+0000000001586640)
Дата и время * Код исключения = c0000005 EXCEPTION_ACCESS_VIOLATION
Дата и время * Произошло нарушение прав доступа при чтении адреса 000000000000002A
Дата и время * Входной буфер: 109 байт —
Дата и время * 16 00 00 00 12 00 00 00 02 00 00 00 00 00 00 00 00 00 00 00 00
Дата и время * 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 64 00 73 00 00 00 00 00 26 04 04 f4
Дата и время * & & ÿ 01 00 00 00 00 26 04 04 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 26 04 04 00 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:
Последний накопительный пакет обновления для SQL Server 2017
Последний накопительный пакет обновления для SQL Server 2016
Последний накопительный пакет обновления для SQL Server 2014
Состояние
Корпорация Майкрософт подтвердила, что это проблема продуктов Microsoft, перечисленных в разделе «Относится к».
Ссылки
Узнайте о терминологии, используемой корпорацией Майкрософт для описания обновлений программного обеспечения.