GO
在这个例子中,我为SQL Server默认环境备份了AdventureWorks DW示例数据库到备份文件夹中去。备份是我们最可靠的擦除器。如果你不想要经常备份,试试叫作“数据库快照”的数据库新功能。数据库快照就是第二种方式。它允许我们取出某个时间点的数据库图像。当主数据库(或者源数据库)发生变化的时候,快照数据库对数据库备份之前发生的主要变化进行了记录。从本质上说,数据库快照在拷贝上使用了从被修改页面上传过来的写技术。因此你可以使用快照来进行恢复。要创建数据库快照,我执行如下的T-SQL:
CREATE DATABASE AdventureWorks_DWBEFORECHANGE ON ( NAME = AdventureWorksDW_Data, FILENAME = 'C:Program FilesMicrosoft SQL ServerMSSQL.1MSSQLDataAdventureWorks_DW.ss'AS SNAPSHOT OF AdventureWorksDW;
GO
这里灵活的部分就是知道数据文件的名字,在NAME子句中提供出来。你可以通过在SQL Server管理套件的数据库对象浏览器中找到拥有的文件来找到数据库数据文件名(是的,我们耍赖了)。
现在,我们做一些修改,然后。噢我的天!我们需要回滚!魔法就在这里:
Use Master;
RESTORE DATABASE [AdventureWorksDW] FROM DATABASE_SNAPSHOT = 'AdventureWorks_DWBEFORECHANGE';
这很酷,但是有些局限。当你使用快照恢复之后,你应该进行一次完全的数据库备份——仅仅是重新执行以上步骤。SQL Server重新构建了日志文件,然后执行一次完整的备份来使它正确。还有,既然数据库快照不能捕捉数据库中的一切内容,只是那些被修改了的部分,你可能需要使用我们前面创建的完全备份,或者用脚本重新输入所与的测试数据。在很多情况下,我们都将数据放在单独的插入数据脚本中,所以我们可以在匆忙间重新产生它们。
我喜欢使用叫做EMS DB Extract的工具。它在生成向数据库中创建数据插入的脚本方面非常棒。SQL Server确实提供了数据库导入和导出向导,但是我发现它是有限制的,它强 猜你喜欢