SqlServer2005,恢复比备份慢得多 – 这是预期的?

我的备份/恢复变得迟缓(不同的故事),但看着备份和恢复的持续时间,我看到备份在几秒钟内完成,而在MINUTES恢复完成。 这是我的一个惊喜 – 有什么build议吗? 所有评论最感谢!

丹麦安德斯

设置如下:我将“生产”数据库备份到本地硬盘上的文件中,然后分别将备份恢复到“testing”和“unit testing”数据库。

备份/恢复脚本:

BACKUP DATABASE [Onsdagspool.Prod] TO DISK = N'C:\_UnderBackup\DataBackup\Onsdagspool.Prod.bak' WITH NOFORMAT, INIT, NAME = N'Onsdagspool.Prod-Full Database Backup', SKIP, NOREWIND, NOUNLOAD, STATS = 10 RESTORE DATABASE [Onsdagspool.Test] FROM DISK = N'C:\_UnderBackup\DataBackup\Onsdagspool.Prod.bak' WITH FILE = 1, NOUNLOAD, REPLACE, STATS = 10 RESTORE DATABASE [Onsdagspool.UnitTest] FROM DISK = N'C:\_UnderBackup\DataBackup\Onsdagspool.Prod.bak' WITH FILE = 1, NOUNLOAD, REPLACE, STATS = 10 

在备份/恢复过程的输出之下:

  Processed 4056 pages for database 'Onsdagspool.Prod', file 'ASPNETDB_8406dd98c17 54e1881b70937978ae08c_DAT' on file 1. 100 percent processed. Processed 2 pages for database 'Onsdagspool.Prod', file 'ASPNETDB_TMP_log' on fi le 1. BACKUP DATABASE successfully processed 4058 pages in 3.266 seconds (10.176 MB/se c). 10 percent processed. 20 percent processed. 30 percent processed. 40 percent processed. 50 percent processed. 60 percent processed. 70 percent processed. 80 percent processed. 90 percent processed. 100 percent processed. Processed 4056 pages for database 'Onsdagspool.Test', file 'ASPNETDB_8406dd98c17 54e1881b70937978ae08c_DAT' on file 1. Processed 2 pages for database 'Onsdagspool.Test', file 'ASPNETDB_TMP_log' on fi le 1. RESTORE DATABASE successfully processed 4058 pages in 240.773 seconds (0.138 MB/ sec). 10 percent processed. 20 percent processed. 30 percent processed. 40 percent processed. 50 percent processed. 60 percent processed. 70 percent processed. 80 percent processed. 90 percent processed. 100 percent processed. Processed 4056 pages for database 'Onsdagspool.UnitTest', file 'ASPNETDB_8406dd9 8c1754e1881b70937978ae08c_DAT' on file 1. Processed 2 pages for database 'Onsdagspool.UnitTest', file 'ASPNETDB_TMP_log' o n file 1. RESTORE DATABASE successfully processed 4058 pages in 240.656 seconds (0.138 MB/ sec). 

预期。 假定备份是罕见的灾难场景 – 恢复是常规操作。

加。 恢复实际上做更多的工作;)

是。 备份只是一个字节复制操作(从MDF / NDF / LDF文件复制到BAK文件中)。 恢复类似于从另一个方向(从BAK到相应的MDF / NDF / LDF文件)的复制以及正在运行的恢复。 运行恢复取决于要处理的日志的大小,并且相对较慢。 而且,作为奖励,还原可能需要调整数据库文件的大小并将其初始化,这可能是另一个耗时的操作。 所以你有它,恢复总是比相应的备份慢(硬件差异等)。

如果您使用的是SQL2005或更高版本,并且还原操作包括数据库创build,请确保启用“ 允许文件分配请求在创build时跳过零初始化 ”的即时文件初始化 , 因此,文件分配请求可以立即发生 – 无论文件大小 “。 这意味着你可以快速恢复。 查看这个博客的详细解释。