KB4039089 — ИСПРАВЛЕНИЕ: ошибка EXCEPTION_ACCESS_VIOLATION при выполнении хранимой процедуры sys.sp_MScdc_capture_job в SQL Server

Применяется к
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 2016 Service Pack 1 SQL Server 2017 on Windows (all editions) SQL Server 2017 on Linux (all editions) SQL Server 2014 Developer - duplicate (do not use) SQL Server 2014 Enterprise - duplicate (do not use) SQL Server 2014 Enterprise Core - duplicate (do not use) SQL Server 2014 Standard - duplicate (do not use)

Проблема

Рассмотрим следующий сценарий.

  • Предположим, что у вас есть секционированные таблицы в Microsoft SQL Server и они являются частью Запись данных изменения (CDC) или репликации транзакций. Вы переключаете или выключаете секции из этих таблиц.
  • После переключения секций при выполнении операций языка обработки данных (DML) вы можете заметить, что происходит EXCEPTION_ACCESS_VIOLATION и создается файл дампа памяти.

Примечание

Дата и время ***Дамп стека отправляется в FilePath\FileName
Дата и время SqlDumpExceptionHandler: process ProcessID , созданное неустранимым исключением c0000005 EXCEPTION_ACCESS_VIOLATION. SQL Server этот процесс завершается.
Дата и время * *******************************************************************************
Дата и время
Дата и время * НАЧАЛО дампа стека:
Дата и время
Дата и время
Дата и время *
Дата и время
Дата и время * Адрес исключения = 000007FEE724BD80 Module(sqllang+00000000015BBD80)
Дата и время * Код исключения = 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
Дата/время * 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 00 00 26 04 04 f4
Дата и время * & & 1 00 00 00 00 00 26 04 04 00 00 00 00 00 00 00 26 04 04 ff
Дата и время * ляйй ¥ & ff ff ff 00 00 a5 0a 00 00 00 00 00 00 26 04 04 8f 13 00
Дата и время * & & 00 00 00 26 04 04 00 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, перечисленных в разделе «Относится к».

Ссылки

Узнайте о терминологии, используемой корпорацией Майкрософт для описания обновлений программного обеспечения.