【发布时间】:2011-04-26 18:09:11
【问题描述】:
我正在更新一个框架来测试数据库驱动的代码。在对数据库进行每次写入测试之前,它会执行RESTORE 的数据库备份,这需要 15-20 秒,所以我试图通过保持分离的 mdf、ldf 和 ndf 文件的“备份”来加速它这样我就可以在每次测试之前CREATE DATABASE...FOR ATTACH。问题是,在使用 RESTORE 时,您可以通过以下方式“移动”(或者,更具体地说,选择将备份还原到的位置)mdf、ldf 和 ndf 文件:
RESTORE DATABASE [testDB]
FROM DISK = N'\\Path\To\Backup' WITH FILE = 1, RECOVERY,
MOVE N'testDB' TO N'\\Path\To\MDF',
MOVE N'testDB_log' TO N'\\Path\To\LDF',
MOVE N'ftrow_testDB' TO N'\\Path\To\NDF',
NOUNLOAD, REPLACE, STATS = 1
但是,使用 CREATE DATABASE FOR ATTACH,我似乎找不到任何方法来“移动” mdf、ldf 和 ndf 文件。附加时,它只使用您指定的文件作为数据库文件:
CREATE DATABASE [testDB] ON
(FILENAME = N'\\Path\To\MDF'),
(FILENAME = N'\\Path\To\LDF'),
(FILENAME = N'\\Path\To\NDF')
FOR ATTACH
这意味着要保留这三个文件的“备份”,我每次都需要从备份目录中复制它们,这既费时又会抵消任何速度提升。
有人对如何使它工作有任何想法吗?
【问题讨论】:
标签: sql-server-2008-r2 automated-tests database-backups database-restore