Jac*_*tti 3 backup sql-server sql-server-2005
我有我公司最近接管的一个项目的数据库的 .bak 文件。
我能够恢复几个 .bak 文件,但最重要的一个失败了。
当它失败时,我只会收到一个通用错误,并要求检查日志。
这是发生的错误:Message SQL Server Assertion: File: , line=1443 Failed Assertion = 'pFile'。此错误可能与时间有关。如果重新运行语句后错误仍然存在,请使用 DBCC CHECKDB 检查数据库的结构完整性,或重新启动服务器以确保内存中的数据结构未损坏。
我不知道如何在 *.bak 文件上运行 DBCC CHECKDB。
任何帮助将不胜感激。虽然我作为开发人员有使用 SQL 的经验,但我绝对不是 DBA。所以假设我是个白痴。:)
谢谢!
Pau*_*dal 11
发生该断言是因为还原代码从备份中读取了一个页面,但该页面已损坏,并且正在还原的数据库中不存在页眉中标记的文件 ID。它是从一个名为 bckioreq.cpp 的代码文件中触发的(我在 MS 时曾经拥有所有这些东西)。
运行 DBCC CHECKDB 的消息是一条通用消息,不适用于这种情况。
我认为您正在恢复完整的数据库备份,然后是一系列其他差异和/或日志备份?您正在 2005 年进行恢复,但您是否正在恢复较旧的备份?
这就是代码中所谓的零售断言——绝对没有办法绕过它——一旦代码命中它,断言就会触发,恢复炸弹就会爆炸。有一个 Connect 项目可以使这个更好,但它也没有在 2008 年修复。
这是否发生在您正在恢复的完整备份或随后的差异和/或日志备份之一?如果是完整备份,则您无能为力 - 备份就是吐司。如果是较晚的备份之一,您可以恢复所有内容,但不包括该备份。
恐怕这基本上就是你的答案。
现在,这是怎么发生的?(反问)可能是备份的数据库已损坏,或者 I/O 子系统损坏了备份。您可以做几件事来帮助防止这种情况发生 - 打开数据库中的页面校验和并在备份上使用 WITH CHECKSUM 选项。这增加了一些检查以确保备份的内容没有损坏。您还可以通过各种方式验证您的备份 - 查看我的博客文章:验证备份的重要性。
希望这可以帮助!
| 归档时间: |
|
| 查看次数: |
2149 次 |
| 最近记录: |