变更跟踪需要哪个版本的 SQL Server 2008?据我所知,变更数据捕获需要企业版,我希望变更跟踪可以在标准版上运行。
蒂娅·戴夫
答案1
每个版本都包含变更跟踪功能 - 它的全部目的是支持偶尔连接的系统场景 - 例如手持设备。变更数据捕获仅适用于企业版。
以下是我在 2008 年 11 月为 TechNet 杂志撰写的一篇专题文章:SQL Server 2008:跟踪企业数据库中的更改,其中给出了作为 DBA 在启用了更改跟踪或更改数据捕获的系统上可能遇到的一些问题,以及两者之间的扩展比较表。通过与 SQL Books Online 团队的技术作者交谈,他们知道 BOL 需要针对这两个功能进行一些升级 - TN Mag 文章现在更“易于理解”一些。
更改跟踪的主要一点是您也应该使用快照隔离->tempdb 加载。
答案2
看看这个:
http://msdn.microsoft.com/en-us/library/bb522489.aspx(变更数据捕获)
和这个:
http://msdn.microsoft.com/en-us/library/cc280462.aspx(更改跟踪)
和这个:
http://msdn.microsoft.com/en-us/library/cc280519.aspx(比较)
最后,这似乎表明 Express Edition 支持更改跟踪:
http://social.msdn.microsoft.com/Forums/en-US/sqlexpress/thread/3452dd14-d4d1-48e0-9de4-a193619a72be
答案3
显示审计信息的差异,并解释比较变更数据捕获和变更跟踪更好的是,这里有一些例子:
我修改了表中的记录,更改已突出显示 - AddressID 为 1、5 和 2 的行(按此顺序)
然后我添加了一行AddressID = 32522,然后将其删除结果是:
显示的值表明所做的更改 - 对 AddressID 为 1、2 和 5 的行进行了三次更新,并删除了 AddressID = 32522 的行。没有明确迹象表明 32522 行是第一次插入的,但根据更改创建版本 (ChCrVer) 和更改版本 (ChVer) 值 5 和 6,有 2 处更改。第二个是删除,但我们不知道第一个是什么
以下是变更数据捕获提供的信息
__$operation = 1 表示删除的行,2 表示插入的行,3 表示在执行之前更新的行
如果某一列首先从“1970 Napa Street”更新为“123 Street”,然后更新为“99 Daisy Street”,则可以获取全部 3 笔交易,或者仅获取净值(最后)
更改跟踪仅显示更改的内容以及更改是插入、更新还是删除,而更改数据捕获则显示已修改行的插入、删除或更新的值。对于更新,它显示已更新行的旧值和新值
该功能不会跟踪进行更改的用户。为此,您必须创建一个新字段,其中存储用户的详细信息并在每次更改后更新。更改时间和进行更改的机器也是如此。不跟踪 SELECT 语句的执行和对象访问