这很酷,但是有些局限。当你使用快照恢复之后,你应该进行一次完全的数据库备份——仅仅是重新执行以上步骤。SQL Server重新构建了日志文件,然后执行一次完整的备份来使它正确。还有,既然数据库快照不能捕捉数据库中的一切内容,只是那些被修改了的部分,你可能需要使用我们前面创建的完全备份,或者用脚本重新输入所与的测试数据。在很多情况下,我们都将数据放在单独的插入数据脚本中,所以我们可以在匆忙间重新产生它们。
我喜欢使用叫做EMS DB Extract的工具。它在生成向数据库中创建数据插入的脚本方面非常棒。SQL Server确实提供了数据库导入和导出向导,但是我发现它是有限制的,它强迫我使用向导,这就意味着改变了我的操作方式。假如你选择了使用数据库导入导出向导,你会发现它创建并执行了SQL Server综合服务(SSIS)包。这可以非常方便,也可以不是。数据库导入导出向导可以使用目标数据库或者几种不同类型的文件格式。选择目标数据库就意味着你每次要运行它的时候都要创建一个新的数据库,或者重写现有的数据库。我比较喜欢让我的服务器保持整洁,所以一个数据库拷贝足够了——我只是重写原有的那个备份。
现在,我们有三种方式来治理数据库变更和变更错误了:
1、使用数据库备份来保护主要工作数据库——这是最可靠的
2、使用数据库快照来撤销错误的数据库操作——这有限制,但是方法可行。
3、使用数据库导入导出向导将数据和计划放到备份数据库中去——这在创建第二个拷贝并将数据和表传送的时候有用。
当我们的开发阶段完成的时候,我们会想要将测试数据库移动到产品中去。在实际情况中,很少有产品数据库需要导出并替换。
在本文前面的段落中,我们使用了完全备份来处理错误的删除。备份也可以用于从开发/测试数据库中移植到产品数据库。这种方法的用例是,假如开发数据库作为产品数据库的拷贝启动的——通过开发引入新的数据库对象,甚至可能是数据。使用这种技术的大多数的成功都来自认真地记录数据库之间区别的稳定,并且确保没有暂停。假如我们想要重新存储开发数据库作为产品数据库,我们需要执行如下:
| RESTORE DATABASE [AdventureWorksDW] = N'C:Program FilesMicrosoft SQL ServerMSSQL.1MSSQLBackupAdventureWorksDW.bak' WITH FILE = 2, NOUNLOAD, REPLACE, STATS = 10 |
通常在产品环境中,使用完全的备份来更新产品数据库是取巧的。还有,假如你在工作时间做这个,它会引起数据库的阻塞。仔细计划你的更新。
假如你的修改与计划有关,就是说要添加字段和表——最多就是——你在T-SQL中使用Alter。这需要很慢很仔细的工作,但是当服务器在线的时候,这个过程顺利得多。此外,确保你或者数据库治理员在你执行之前进行了数据库的备份。在一次,你需要考虑使用数据库快照。
大多数在数据库开发过程中发生的悲惨崩溃都是由于缺乏指导和认真的开发实践。这篇文章对于如何使用SQL Server特性来处理错误,以及数据库对象开发任务作了初步讲解。要提高速度,你可以查看Microsoft Visual Studio Team Addition for Database Professionals
评论加载中…
![]() |