症状
请考虑以下情况:
-
假设你在 Microsoft SQL Server中已分区表,它们是更改数据捕获 (CDC) 或事务复制的一部分。 从这些表切换或切换分区。
-
执行数据操作语言 (DML) 操作时,分区切换后,可能会注意到发生 EXCEPTION_ACCESS_VIOLATION 并生成内存转储文件。
日期/时间 ***将堆栈转储发送到 FilePath\FileName
日期/时间 SqlDumpExceptionHandler:进程 ID 生成了致命异常 c0000005 EXCEPTION_ACCESS_VIOLATION。 SQL Server正在终止此过程。 Date/Time * ********** Date/Time * 日期/时间 * BEGIN STACK DUMP: Date/Time * Date/Time * Date/ Time * Date/Time * Date/Time * Date/ Time * 异常地址 = 000007FEE724BD80 模块 (sqllang+00000000015BBD80) 日期/时间 * 异常代码 = c0000005 EXCEPTION_ACCESS_VIOLATION Date/时间 * 发生访问冲突读取地址 00000000000000002A 日期/时间 * 输入缓冲区 70 字节 日期/时间 * sys.sp_MScdc_capture_job 日期/时间 *日期/时间 ***将堆栈转储发送到 FilePath\FileName
日期/时间 SqlDumpExceptionHandler:进程 PID 生成了致命异常 c0000005 EXCEPTION_ACCESS_VIOLATION。 SQL Server正在终止此过程。 日期/时间 * ******* 日期/时间 * 日期/时间 * BEGIN STACK DUMP: Date/Time * 日期/时间 * 日期/时间SPID 日期/时间 * 日期/Time * 日期/时间 * 异常地址 = 000007FEE9D26640 模块 (sqllang+0000000001586640) 日期/时间 * 异常代码 = c0000005 EXCEPTION_ACCESS_VIOLATION 日期/时间 * 读取地址 0000000000000002A 日期/时间 * 输入缓冲区 109 字节 - 日期/时间 * 16 00 00 12 00 00 00 02 00 00 00 00 00 00 00 00日期/时间 * s p _ r e p 01 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 6400 73 00 00 00 00 00 00 26 04 04 f4 日期/时间 * & & ÿ 01 00 00 00 00 00 26 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 Date/时间 * & & 00 00 00 26 04 00 00 00 00 00 00 00 00 26 04 04 20 a107 日期/时间 * 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累积更新中修复了此问题:
SQL Server的每个新累积更新都包含以前的累积更新中包含的所有修补程序和所有安全修补程序。 查看SQL Server的最新累积更新:
状态
Microsoft 已确认这是在“适用范围”部分中列出的 Microsoft 产品存在的问题。
参考
了解 Microsoft 用于描述软件更新 的术语。