在我们的开发环境中,我们长期以来通过各种sql Server版本和不同的环境配置为每个产品使用特定的备份和还原脚本,没有任何问题.
最近我们已经升级到sql Server 2012作为我们的标准开发服务器,具有sql兼容级别2005(90),以保持对旧系统的支持.现在我们发现在一个特定的dev的机器上,我们在尝试备份数据库时会收到以下错误:
Cannot use the backup file ‘D:\MyDB.bak’ because it was
originally formatted with sector size 512 and is now on a device with
sector size 4096. BACKUP DATABASE is terminating abnormally.
命令是:
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,NOFORMAT,BLOCKSIZE = 4096
任何人都可以说明如何将数据库备份和还原到具有不同扇区大小的HDD?
解决方法
此问题是由不同驱动器使用的不同扇区大小引起的.
您可以通过将原始备份命令更改为:
BACKUP DATABASE MyDB TO DISK = N'D:\MyDB.bak' WITH INIT,FORMAT
请注意,我已将NOFORMAT更改为FORMAT,并将NOSKIP删除.
在MSDN的以下博客文章的评论部分找到解决这个问题的提示:
SQL Server–Storage Spaces/VHDx and 4K Sector Size
有关4k部门驱动器的更多信息:
http://blogs.msdn.com/b/psssql/archive/2011/01/13/sql-server-new-drives-use-4k-sector-size.aspx