跟踪SQL Server表数据更改

时间:2015-03-25 04:02:17

标签: sql-server sql-server-2012

我们目前正在开展医疗保健应用程序。由于医疗数据非常敏感,我们可能必须保留对某些医疗记录所做的所有更改的历史记录。我知道我们可以通过保留用于登录更改的历史记录表来实现此目的。但是保留历史表会导致数据库变大。所以我想知道SQL Server中是否有任何功能可以跟踪表的完整数据更改。我听说过Change Data Capture功能。它适用于我的场景吗? 提前致谢

1 个答案:

答案 0 :(得分:2)

这在很大程度上取决于您需要跟踪的内容。首先,跟踪所有历史的任何东西将使用更多的空间,并且假设相同的细节水平,在它需要的大量空间中不会有显着差异。数据是数据,只需要存储空间。但是,如果您愿意,可以使用几个选项来查看将审计信息存储在SQL之外,这有助于。

其次,你至少有三个明显的选择。

  1. 在表上使用SQL触发器来创建历史记录表。这允许您根据需要包含任意数量或列数,这是一个很好的功能。

  2. 使用SQL更改跟踪来监视更改并创建历史记录表或以其他方式审核更改。更改跟踪仅存储有更改的内容,由您来存储更改的内容。由于这是可查询的,如果需要,您可以在dB之外相对容易地存储它。

  3. 如上所述使用SQL Change Data Capture。这非常重量级,并且具有性能和存储方面的影响。但是,它将为您完成大部分工作,并且相对容易使用。