如何对一张表进行每日快照?

3

我正在建立一个销售数据库。其中一个表必须是销售代表及其分配领Territory的层次结构。这些代表及其领Territory每天都会发生变化,我需要跟踪每天该表的确切外观。我需要每天对该表进行快照。

我想知道我需要做什么或如何存储表中的数据,才能够准确地知道表中的数据在某个时间点上是什么样子。

这可能吗?

请记住,表不会超过1MB左右。

2个回答

3

我建议使用Paul Nielsen的AutoAudit

AutoAudit是一个SQL Server(2005、2008)代码生成实用程序,可以创建带有以下内容的审计跟踪触发器:

  • Created,CreatedBy,Modified,ModifiedBy和RowVersion(递增INT)列到表格
  • 将插入事件记录到审核表中
  • 更新旧值和新值记录到审核表中
  • 删除将所有最终值记录到审核表中
  • 查看以重构已删除的行
  • UDF以重构行历史记录
  • 模式审核触发器以跟踪模式更改
  • 当Alter Table更改表时重新生成触发器

他的原始博客文章:CodeGen to Create Fixed Audit Trail Triggers

在您在生产中实施之前,请建议您将数据库备份还原到开发环境中并在其中进行操作。


你能告诉我如何为我的问题实现这个吗? - Alex Gordon
@MitchWheat 我不明白如何查询特定日期的快照,因为并非所有数据都会更改。 - Alex Gordon
@MitchWheat 抱歉打扰您,但您能否请告诉我如何在特定时间查看表的完整快照? - Alex Gordon
还有,我该如何修改这个脚本,使其仅在一个表上运行,而不是在数据库中的所有表上运行? - Alex Gordon
@MitchWheat 伙计,你在吗? - Alex Gordon
显示剩余6条评论

0

这是针对MS SQL的。

由于表格非常小,最好使用MS SQL提供的快照功能。

要创建数据库的快照:

CREATE DATABASE YourDB_Snapshot_DateStamp ON
( NAME = YourDB_Data, FILENAME = 
'C:\Program Files\Microsoft SQL Server\MSSQL10_50.MSSQLSERVER\MSSQL\Data\YourDB_Snapshot_DateStamp.ss' )
AS SNAPSHOT OF YourDB;
GO

请参考此页面: http://msdn.microsoft.com/en-us/library/ms175876.aspx 您可以创建任意数量的快照。因此,我的建议是创建一个脚本或任务,每天创建一个快照并将日期附加到快照名称中。这样,您就可以在服务器上看到所有快照。
重要提示:快照是只读的。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接