恢复 SQL 2008 数据库失败,页面 xxx:xxx 出现错误

恢复 SQL 2008 数据库失败,页面 xxx:xxx 出现错误

情况如下:

获得了 SQL 2008 数据库的完整备份(.bak 文件),带有分区。.bak 文件为 100gb。

我需要将此数据库恢复到另一台服务器上的新数据库。命令如下:

Restore Database [newname] FROM DISK= N'D:\mydatabase.bak' WITH FILE = 1
MOVE 'mydatabasename' TO 'C:\mydatabase.mdf'
MOVE 'Partition1' TO 'C:\`mydatabase_1.ndf'etc..
STATS = 1

处理了 52% 之后,出现以下错误:

Msg 3183, Level 16, State 2, Line 1
RESTORE detected an error on page (8481:555819297) in database "dbname" as read from the backup set.
Msg 3013, Level 16, State 1, Line 1
RESTORE DATABASE is terminating abnormally.

在出现所有默认建议之前,我已经完成了以下操作:

  • 在原始数据库上 Checkdb --> 没有错误
  • 在我的本地机器上恢复 .bak 文件 --> 没有错误,所以备份是正确的。

我该怎么做才能解决这个问题?我怎样才能找到实际问题?

谢谢您的任何建议。

也在 stackoverflow 上询问,但他们建议在 serverfault 上询问: 链接至 stackoverflow

答案1

除非故障服务器的底层磁盘/存储系统出现问题,否则文件中出现无法在不同硬件上重现的读取错误的情况并不常见。

如果您在服务器上运行了两次恢复,我推测两次都失败了。错误是否发生在同一页上?如果不是,我怀疑磁盘存在硬件问题,并使用性能监视器查看磁盘的物理秒/传输值。如果错误发生在同一页,那么我会怀疑该文件。您本地的副本是从服务器上失败的副本制作的,还是来自其他来源?也许在将 .bak 从该源复制到服务器时已损坏。

如果可能的话,最好再获取一份备份文件。如果这不可行,我会在你确实设法(显然)完全恢复的数据库上运行 checkdb。如果完全恢复,我会考虑将数据库从本地计算机分离,将所有数据和日志文件复制到服务器并重新连接数据库。然后再执行一次 checkdb。

相关内容