跟踪SQL Server 2005数据库中的更改

Bri*_*ton 9 sql-server tracking change-management

我的任务是开发一个跟踪数据库更改的解决方案.

对于我需要捕获的更新:

  • 更新日期
  • 旧的价值
  • 新的价值
  • 场受影响
  • 做变化的人
  • 记录ID
  • 表记录在

删除:

  • 删除日期
  • 做删除的人
  • 已删除记录的标题/描述/ ID.我跟踪的表更改都有标题或说明字段.我想在删除记录之前捕获它.
  • 表记录在

对于插入:

  • 插入日期
  • 做变化的人
  • 记录ID
  • 表记录在

我想过几种方法可以做到这一点:

  • 我正在使用存储过程进行任何更新/删除/插入.我会创建一个通用的"跟踪"表.它将有足够的字段来捕获所有数据.然后,我会在每个存储过程中添加另一行,以"将记录插入跟踪表"的效果.
    • 缺点:所有更新/删除/插入都在同一个表中混乱
    • 很多空字段
    • 如何跟踪批量更新/删除/插入?<----这可能不是问题.我在应用程序中没有做任何类似的事情.
    • 如何捕获进行更新的用户.数据库只看到一个帐户.
    • 编辑许多现有代码进行编辑.
  • 最后,我可以创建一个在更新/删除/插入后调用的触发器.许多与第一个解决方案相同的缺点除了:我必须编辑尽可能多的代码.我不确定如何跟踪更新.它看起来不像使用触发器来查看最近更新的记录.

我正在使用asp.net,C#,sql server 2005,iis6,windows 2003.我没有预算,所以很遗憾,我无法买任何东西来帮助我.

谢谢你的回答!

Joe*_*orn 5

我不想回避这个问题,我知道您没有预算,但最简单的解决方案是升级到 SQL Server 2008。它. 我认为至少应该为遇到此问题的任何其他人提及,即使您自己无法使用它。

(在 SQL 2008 的可部署版本中,此功能仅在 Enterprise 中可用。)


dkr*_*etz 5

由于一系列原因,触发器不会包含您需要的所有信息 - 但没有用户 ID 是关键。

我会说你在正确的轨道上有一个通用的 sp 可以插入到任何发生变化的地方。如果您正在为您的接口标准化 sp,那么您就处于领先地位 - 很难潜入未跟踪的更改。

将此视为会计应用程序中的审计跟踪的等价物 - 这是日志 - 记录每个交易的单个表。他们不会为存款、取款、调整等实施单独的日记帐,这是相同的原则。