Ознаки
Розглянемо такий сценарій:
-
Припустімо, що у вас є розділені таблиці в Microsoft SQL Server і вони є частиною зміни даних захоплення (CDC) або транзакцій реплікації. Переключення або вихід розділу з цих таблиць.
-
Після переключення розділів під час виконання операцій з мовою керування даними (DML), ви можете помітити, що EXCEPTION_ACCESS_VIOLATION відбувається і файл дампа пам'яті створюється.
Дата й час ***Дамп стека надсилається до FilePath\FileName
Date/Time SqlDumpExceptionHandler: ProcessID створив критичний виняток c0000005 EXCEPTION_ACCESS_VIOLATION. SQL Server завершує цей процес. Дата/час * ******* Дата/час * 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 * Порушення прав доступу відбулося читання адреси 000000000000002A дата/час * Вхідний буфер 70 байт дата/час * sys.sp_MScdc_capture_job дата/час *Дата й час ***Стек дамп надсилається до FilePath\FileName
Date/Time SqlDumpExceptionHandler: Процес PID створив критичний виняток c0000005 EXCEPTION_ACCESS_VIOLATION. SQL Server завершує цей процес. Дата/час * ******* * Дата/час * Дата/час * 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 Дата/час * Порушення прав доступу: сталася адреса читання 00000000000002A дата/час * Вхідний буфер 109 байт - Дата/час * 16 00 00 00 12 00 00 00 00 00 00 00 00 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 Date/Time * 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 00 00 00 26 04 04 00 00 00 00 00 00 26 04 04 ff Дата/час * ". ¥ & ff ff ff 00 00 a5 0a 00 00 00 00 00 26 04 04 8f 13 00 Date/Time * & & ". 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 2017 р.
Стан
Корпорація Майкрософт підтвердила, що це проблема в продуктах Microsoft, перелічених у розділі "Стосується".
Посилання
Дізнайтеся про термінологію, яку корпорація Майкрософт використовує для опису оновлень програмного забезпечення.