这是情况:
有一个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.
在所有的默认build议出现之前,这是我已经完成的:
我能做些什么来解决这个问题? 我怎样才能解决实际问题?
感谢您的任何build议。
也问在stackoverflow,但他们build议问serverfault: 链接到stackoverflow
在不能在不同硬件上重现的文件中发生读取错误是很less见的,除非故障服务器的底层磁盘/存储系统出现问题。
如果您在服务器上运行了两次恢复,则我认为这两次都失败了。 错误是否发生在同一页上? 如果没有,我会怀疑磁盘的硬件问题,我会看看使用性能监视器来查看磁盘的物理秒/传输值。 如果错误发生在同一页面,那么我会怀疑该文件。 您的本地副本是由服务器上的故障还是来自其他来源的副本? 也许.bak在从源复制到服务器的时候被破坏了。
如果可能,最好备份备份文件的副本。 如果这不是一个选项,我会运行一个checkdb数据库,你确实(显然)恢复干净。 如果这是干净的,我会考虑从本地机器上分离数据库,将所有数据和日志文件复制到服务器并重新连接数据库。 然后做另一个checkdb。