在我们的开发环境中,我们一直使用特定的备份和还原脚本来处理我们的各个产品,针对不同版本的SQL Server以及不同的环境配置,一直都没有问题。
最近,我们升级到了SQL Server 2012作为我们的标准开发服务器,使用SQL兼容性级别2005(90)以便与旧系统保持兼容。现在我们发现,在一个特定的开发者机器上,当尝试备份数据库时,会出现以下错误:
无法使用备份文件“D:\MyDB.bak”,因为它最初是使用512字节扇区大小格式化的,而现在它在一个4096字节扇区大小的设备上。备份数据库异常终止。
命令如下:
BACKUP DATABASE MyDB TO DISK = N'D:\MyDB.bak' WITH INIT , NOUNLOAD , NAME = N'MyDB backup', NOSKIP , STATS = 10, NOFORMAT
有趣的是,该开发人员的计算机硬件和分区都没有更改,尽管它们的扇区大小不同,但这以前并不是问题。
根据我的研究(即对谷歌的搜索),除了使用 WITH BLOCKSIZE
选项的建议外,几乎找不到关于这个问题的信息,但使用该选项后仍然出现相同的错误消息。
我的查询如下:
BACKUP DATABASE MyDB TO DISK = N'D:\MyDB.bak' WITH INIT , NOUNLOAD , NAME = N'MyDB backup', NOSKIP , STATS = 10, NOFORMAT, BLOCKSIZE = 4096
有人能解释一下我如何备份并恢复不同扇区大小的硬盘上的数据库吗?
WITH INIT
覆盖旧的备份文件。您是否尝试过将其备份到不同的文件名?BACKUP DATABASE MyDB TO DISK = N'D:\MyDB2.bak'...
- Dave Mason