症状
假设您使用 Microsoft SQL Server 2016 或 2017。 尝试还原数据库时,可能会收到类似如下内容的访问冲突转储:
DateTime spidSpidId 数据库“DatabaseName”标记为 RESTOREING,处于不允许运行恢复的状态。
DateTime spidSpidId 还原 (DatabaseName) : 脱机前滚开始
DateTime spidSpidId 还原 (DatabaseName) : Starting filestream recovery
DateTime spidSpidId 还原 (DatabaseName) :处理 136 个 VLF 标头
DateTime spidSpidId 还原 (DatabaseName) :处理 VLF 头已完成
DateTime spidSpidId 还原 (DatabaseName) : 第一个 LSN:LSNId,最后一个 LSN: LSNId
DateTime spidSpidId [INFO] 数据库 ID: [5]。 删除不可恢复的检查点表行 (ID: 108) 。
DateTime spidSpidId [INFO] 数据库 ID: [5]。 删除不可恢复的检查点表行 (ID: 107) 。
DateTime spidSpidId [INFO] 数据库 ID: [5]。 删除不可恢复的检查点表行 (ID: 109) 。
DateTime spidSpidId [INFO] HkCkptLoadInternalEx () : 数据库 ID: [5]。 根文件:{FileId},水印: WatermarkId,RecoveryLsn: RecoveryLsnId,RecoveryCheckpointId:110,RecoveryCheckpointTimestamp:0x318ce
DateTime spidSpidId ***正在发送到 FilePath 的堆栈转储
DateTime spidSpidId SqlDumpExceptionHandler:进程 ProcessId 生成的致命异常 c0000005 EXCEPTION_ACCESS_VIOLATION。 SQL Server 正在终止此进程。
DateTime spidSpidId * *******************************************************************************
日期时间 spidSpidId *
DateTime spidSpidId * 开始堆栈转储:
DateTime spidSpidId * DateTime spid SpidId
日期时间 spidSpidId *
日期时间 spidSpidId *
DateTime spidSpidId * 异常地址 = ExceptionAddress
DateTime spidSpidId * 异常代码 = c0000005 EXCEPTION_ACCESS_VIOLATION
DateTime spidSpidId * 读取地址 AddressId 发生访问冲突
状态
Microsoft 已确认在 "适用于" 部分中所列的 Microsoft 产品中存在问题。
解决方法
此问题已在 SQL Server 的以下累积更新中修复:
关于 SQL Server 的累积更新:
SQL Server 的每个新累积更新都包含上一个累积更新中包含的所有修补程序和所有安全修补程序。 查看 SQL Server 的最新累积更新:
参考资料
了解 Microsoft 用于描述软件更新的术语。