SQL 2008 中的更改跟踪

SQL 2008 中的更改跟踪

变更跟踪需要哪个版本的 SQL Server 2008?据我所知,变更数据捕获需要企业版,我希望变更跟踪可以在标准版上运行。

蒂娅·戴夫

答案1

每个版本都包含变更跟踪功能 - 它的全部目的是支持偶尔连接的系统场景 - 例如手持设备。变更数据捕获仅适用于企业版。

以下是我在 2008 年 11 月为 TechNet 杂志撰写的一篇专题文章:SQL Server 2008:跟踪企业数据库中的更改,其中给出了作为 DBA 在启用了更改跟踪或更改数据捕获的系统上可能遇到的一些问题,以及两者之间的扩展比较表。通过与 SQL Books Online 团队的技术作者交谈,他们知道 BOL 需要针对这两个功能进行一些升级 - TN Mag 文章现在更“易于理解”一些。

更改跟踪的主要一点是您也应该使用快照隔离->tempdb 加载。

答案2

答案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 语句的执行和对象访问

相关内容