Sql server 变更历史记录表

Sql server 变更历史记录表,sql-server,asp.net-mvc,database-design,Sql Server,Asp.net Mvc,Database Design,我在asp.net MVC 3网站工作,我需要跟踪对表/实体所做的任何更改。无论何时在“编辑”视图中修改了某些内容,都会在该“编辑”视图下方显示一个更改列表,其中包含日期、所做的更改列。我需要用entityHistory名称创建另一个表,还是需要在同一个表中插入另一条记录 请建议取决于您希望对历史数据执行的操作。如果您想显示我发现的记录或对象图快照,那么创建一个与当前表具有相同列的历史记录表,可以更轻松地构建某个更改之后或之前完整记录的外观。这也意味着您将拥有重复的表和数据 如果您的需求是纯粹的

我在asp.net MVC 3网站工作,我需要跟踪对表/实体所做的任何更改。无论何时在“编辑”视图中修改了某些内容,都会在该“编辑”视图下方显示一个更改列表,其中包含日期、所做的更改列。我需要用entityHistory名称创建另一个表,还是需要在同一个表中插入另一条记录


请建议

取决于您希望对历史数据执行的操作。如果您想显示我发现的记录或对象图快照,那么创建一个与当前表具有相同列的历史记录表,可以更轻松地构建某个更改之后或之前完整记录的外观。这也意味着您将拥有重复的表和数据


如果您的需求是纯粹的审核需求,则更容易拥有一个/两个表来保存实体、属性、旧值和新值列的数据。

除了审核选项之外,SQL Server现在还具有CDC(SQL2008中的更改数据捕获)功能,使开发人员能够跟踪SQL表上的数据更改

您可以使用触发器构建类似的日志机制(请参阅以获取示例)


您还可以查看下面的文章,以获得类似于SQL2005中CDC的记录数据更改的增强解决方案“任何”更改?它们通常被称为“审计表”,存储值或增量取决于您的设计。但是对表本身的更改是不同的。我的意思是当有人更新FirstName时,我需要跟踪FirstName在这个日期从这个值更改为newValue。这是因为SQL Server 2008具有审核功能,但使用单独表的自定义内容很常见。@天哪,如果我使用代码,我怎么知道哪些列已更改?