我的个人计算机上安装了 SQL Server 2005 Standard。我创建了一个非常大的数据库,大约 21 GB。我进行了备份,并通过 ftp 程序将 .bak 文件传输到我的专用服务器。我的专用服务器上安装了 SQL Server 2008 Enterprise Edition。我尝试恢复传输的 .bak 文件,但出现错误。我在此处发布了错误,并被告知数据库已损坏。怎么回事?我不知道。在 ftp 传输过程中,连接没有中断。数据库在我自己的计算机上运行良好。因此,我分离了自己计算机上的数据库,并通过 ftp 将 mdf 和 ldf 文件再次传输到我的专用服务器,并且没有出现中断。现在我尝试连接数据库并收到此错误:文件“DB.mdf”的标头不是有效的数据库文件标头。FILE SIZE 属性不正确。(Microsoft SQL Server,错误:5172)
我已经浪费了 21 GB 来传输 .bak 文件。现在我又用了 21 GB 来传输 mdf 和附加 ldf 文件。请告诉我有解决方案。在我的计算机上,sql server 2005 可以正常分离和附加数据库,但在我的服务器上,sql server 2008 不能。
答案1
我猜你的传输可能因为某种原因被破坏了,尽管它看起来已经成功完成了。确实会发生这种情况。
我的建议是在传输之前压缩 BAK 文件。你会发现 BAK 文件的压缩效果非常好,我预计文件大小从 21GB 压缩到 3 或 4GB。WinRAR 的数据压缩效果甚至更好。
将 2005 BAK 文件还原到 SQL 2008 设置中当然是可能的,就像将原始 MDF 和 LDF 文件移过来并附加到 SQL 2008 服务器一样,如文档所述这里。
答案2
您使用的是什么 FTP 程序?有些便宜的程序无法处理大于 2/4 GB 的文件,除非进行翻转。
另外,获取一个简单的 CRC 程序并针对本地档案和远程档案运行它。使用 CRC32,因为它比 MD5 快得多,而且您对它的加密属性不感兴趣。