症状
假设您使用的是 Microsoft SQL Server 2016 或2017。 尝试还原数据库时,可能会收到类似于以下内容的访问冲突转储:
DateTime spidSpidId 数据库 'DatabaseName' 已标记为正在还原,并且处于不允许运行恢复的状态。
DateTime spidSpidId 还原(DatabaseName):脱机前滚开始
DateTime spidSpidId 还原(DatabaseName):启动 filestream 恢复
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 * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
DateTime spidSpidId *
DateTime spidSpidId * BEGIN 堆栈转储:
Datetime spidSpidId * datetime spid SpidId
DateTime spidSpidId *
DateTime spidSpidId *
DateTime spidSpidId * 异常地址 = ExceptionAddress
DateTime spidSpidId * 异常代码 = c0000005 EXCEPTION_ACCESS_VIOLATION
在读取地址 AddressId时发生的DateTime SpidSpidId * 访问冲突
状态
Microsoft 已经确认这是一个列于“适用范围”部分的 Microsoft 产品问题。
解决方案
在 SQL Server 的以下累积更新中修复了此问题:
关于 SQL Server 的累积更新:
SQL Server 的每个新的累积更新均包含以前的累积更新中包含的所有修补程序和所有安全修补程序。 查看 SQL Server 的最新累积更新:
参考
了解 Microsoft 用于描述软件更新的术语。