SQL Server 2005从备份失败还原

我的.bak文件是我公司最近接pipe的一个项目的数据库。

我能够恢复几个.bak文件,但最重要的是失败。

当它失败,我只是得到一个通用的错误,并要求检查日志。

这是发生的错误:消息SQL Server断言:File:,line = 1443 Failed Assertion ='pFile'。 这个错误可能与时间有关。 如果重新运行该语句后错误仍然存​​在,请使用DBCC CHECKDB检查数据库的结构完整性,或者重新启动服务器以确保内存中的数据结构不被损坏。

我不知道如何在* .bak文件上运行DBCC CHECKDB。

任何帮助将不胜感激。 虽然我有作为开发人员的SQL经验,但我绝对不是DBA。 所以假设我是一个白痴。 🙂

谢谢!

该断言发生是因为还原代码从备份中读取页面,但页面已损坏,页面标题中标记的文件ID在正在恢复的数据库中不存在。 它从一个名为bckioreq.cpp的代码文件(我以前在MS中拥有所有这些东西)发射。

运行DBCC CHECKDB的消息是一个通用消息,在这种情况下不适用。

我认为您正在恢复完整的数据库备份,然后进行一系列其他差异备份和/或日志备份? 你正在恢复2005年,但你是否恢复较旧的备份?

这就是所谓的代码中的零售断言 – 绝对没有办法绕过它 – 只要代码碰到它,断言就会触发,恢复就会popup。 有一个连接项目,使这个更好,但它不是在2008年修复。

这是否发生在您正在恢复的完全备份或后续的差异备份和/或日志备份之一上? 如果是完全备份,那么你就什么也做不了 – 备份是烤面包。 如果其中一个较晚的备份,您可以恢复所有内容,但不包括该备份。

恐怕基本上是你的回答。

现在,这是怎么发生的? (修辞问题)可能是因为备份的数据库已损坏,或者I / O子系统损坏了备份。 你可以做的一些事情来帮助防止这种情况 – 打开数据库中的页面校验和,并在你的备份中使用WITH CHECKSUM选项。 这增加了一些检查,以确保什么是备份没有损坏。 您还可以通过各种方式validation备份 – 查看我的博客文章: validation备份的重要性 。

希望这可以帮助!