大多数的DBA都在思考这个问题。在许多数据或表的架构发生巨大变化的时候,确实需要看看在数据变化之前和之后发生了什么。一个精心编写的数据库应用程序可以有自己的日志功能,或者会干脆地设定一种从来不进行数据覆盖的方法。如果没有采取任何措施,你还可以找出备份并与当前版本进行比较,但这意味着是一件令人头痛的事情。
然而是否存在原生的SQL Server功能来找出不同之处呢? 可用于SQL Server数据保护的技术有:更改跟踪,变更数据捕获,复制和数据库镜像,每种技术都有最适合自己的场合。在这里我不会讨论备份技术,而是讨论如何保存和访问特定对象的历史版本数据,如数据或表的早期版本。 更改跟踪 ……
我们一直都在努力坚持原创.......请不要一声不吭,就悄悄拿走。
我原创,你原创,我们的内容世界才会更加精彩!
【所有原创内容版权均属TechTarget,欢迎大家转发分享。但未经授权,严禁任何媒体(平面媒体、网络媒体、自媒体等)以及微信公众号复制、转载、摘编或以其他方式进行使用。】
微信公众号
TechTarget
官方微博
TechTarget中国
大多数的DBA都在思考这个问题。在许多数据或表的架构发生巨大变化的时候,确实需要看看在数据变化之前和之后发生了什么。一个精心编写的数据库应用程序可以有自己的日志功能,或者会干脆地设定一种从来不进行数据覆盖的方法。如果没有采取任何措施,你还可以找出备份并与当前版本进行比较,但这意味着是一件令人头痛的事情。然而是否存在原生的SQL Server功能来找出不同之处呢?
可用于SQL Server数据保护的技术有:更改跟踪,变更数据捕获,复制和数据库镜像,每种技术都有最适合自己的场合。在这里我不会讨论备份技术,而是讨论如何保存和访问特定对象的历史版本数据,如数据或表的早期版本。
更改跟踪
SQL Server更改跟踪是一种相当简单的方法。当该功能被启用时,任何时候一个数据操作语言(DML)动作(插入、更新或删除)发生,它就会记录哪张表的哪一行被修改以及事务发生的时间和日期;如果是更新操作还会记录哪些列被修改(前提是已经启用列跟踪)。可以查询sys.dm_tran_commit_table系统视图获得这些跟踪信息,还可以反过来用于从特殊命名的内部表获得给定表的信息,只要你在创建给定表时已经启用更改跟踪。
默认情况下,更改跟踪记录保持两天时间。你可以通过ALTER DATABASE命令或SQL Server Management Studio管理工具的数据库属性窗口对保留时间进行修改。最短的时间是一分钟;虽然在理论上没有最大值,但是在一个高访问量的数据库中设置该属性超过两天,我对此持怀疑态度,因为系统对象的增长存在失控的可能性。
更改跟踪最大的缺点是:很多关于变化数据和数据模式的信息不会被保留。例如,更改跟踪不保留任何关于给定行在你修改之前它的值是什么的信息。仅有该行最新的数据是什么,就是表本身。如果你删除一张表,所有关于该表的更改跟踪信息也被删除。
另一个缺点,但这是次要的,更改跟踪特性只适用于数据库兼容级别在90或更高的。如果小于90,你仍然可以设置更改跟踪选项,但试图通过CHANGETABLE功能获得跟踪信息将会产生错误。
为此,更改跟踪不能作为有效的数据保护措施。它是一种有效的收集表统计信息的方式且其变化影响较小。如果你想在一个给定的数据库中获得最多或最少更新的列或表的真实信息,并想在此基础上优化你的数据库设计,采用这个特性就很方便。
作者
Serdar Yegulalp从1994年到2001年为Windows杂志写作,覆盖了广泛的技术方面。他现在是《The Windows 2000 Power Users Newsletter》一书的出版者,辛勤钻研他擅长的Windows NT, Windows 2000 and Windows XP领域,并为TechTarget写专栏。
翻译
相关推荐
-
Notre Dame对云端SQL Server性能基准的探索实践
确立SQL Server的性能基准,对于云端迁移来说是至关重要的第一步,一位来自于University of Notre Dame 的DBA表示,他正在试图通过数据库监控软件,找出SQL server的性能基准。
-
DBA必须掌握的数据库恢复管理技术
如果没有备份副本,数据库管理员就无法还原数据库,所以DBA在恢复之前倾向于考虑备份是合乎逻辑的。 但是,对我来说,这种逻辑一直是错误的。
-
DBA也要和领导抢饭碗?
数据库架构师Ziaul Mannan 认为,DBA有成为高管的潜在可能,而这种潜力在过去往往被忽视,他还将证明DBA技能到领导力的转变是可行的。
-
Oracle备份和恢复简史
这些年来,Oracle数据库备份和恢复方式已经发生了重大变化,特别是在Recovery Manager(RMAN)功能有了进一步改善之后。