症状
当您尝试还原内存中的联机事务处理(OLTP)数据库时,由于磁盘空间不足,它将失败。 然后,你可能会注意到存在访问冲突(AV),并获取以下转储文件。
访问冲突转储
DateTime SpidId 按照 "dbghelp" 版本 "VersionId"
DateTime SpidId * * * 堆栈转储 正在发送到 FilePath
DateTime SpidId SqlDumpExceptionHandler: Process 346 生成了 c0000005 EXCEPTION_ACCESS_VIOLATION 的严重异常。 SQL 服务器正在终止此进程。
DateTime SpidId * BEGIN STACK 转储
DateTime SpidId * CurrentTime spid SpidId
DateTime SpidId * 异常地址 = 00007FFB7E6DA7B5 Module (sqlmin + 00000000018CA7B5)
DateTime SpidId * 异常代码 = c0000005 EXCEPTION_ACCESS_VIOLATION
在读取地址时发生的DateTime SpidId * 访问冲突 00000000000000B4
DateTime SpidId * MODULE BASE END SIZE
DateTime SpidId * SQLSERVR 00007FF65AAA0000 00007FF65AB07FFF 00068000
DateTime SpidId * NTDLL 00007FFBA0470000 00007FFBA061CFFF 001ad000
DateTime SpidId * 遇到 KERNEL32.DLL 00007FFBA0190000 00007FFBA02CDFFF 0013e000
此外,如果你尝试删除数据库,你可能会收到类似于以下内容的断言转储。
断言转储
DateTime SpidId * * Dump thread- spid = SPIDId,EC = 0x0000024216677B60
DateTime SpidId * * * 堆栈转储 正在发送到 FilePath
DateTime SpidId * BEGIN STACK 转储
DateTime SpidId * CurrentTime spid SpidId
DateTime SpidId * Location "FilePath":10210
DateTime SpidId * 表达 LdImm (&db->CkptContext->CheckpointCount) = = 0
DateTime SpidId * SPID SPIDId
DateTime SpidId * 进程 ID: ProcessID
DateTime SpidId * 输入缓冲区 252字节-
DateTime SpidId */* * * * * * 对象:数据库 [DatabaseName] 脚本日期: ScriptDate
DateTime SpidId */CurrentTime * * * */除去数据库 [DatabaseName]
状态
Microsoft 已经确认这是一个列于“适用范围”部分的 Microsoft 产品问题。
解决方案
在 SQL Server 的以下累积更新中修复了此问题:
关于 SQL Server 的累积更新:
SQL Server 的每个新的累积更新均包含以前的累积更新中包含的所有修补程序和所有安全修补程序。 查看 SQL Server 的最新累积更新:
参考
了解 Microsoft 用于描述软件更新的术语。