如何获取表的每日快照

时间:2012-01-11 03:30:12

标签: sql sql-server sql-server-2008

我正在建立一个销售数据库。其中一个表必须是销售代表及其指定区域的层次结构。 Ohese的代表和他们的领地每天都在变化,我需要记录每天的表格究竟是什么样的。我需要每天拍摄桌子的快照。

我想知道我必须做什么或如何将数据存储在表中,以便能够准确地知道表中的数据在某个特定时间点。

这可能吗?

请记住,表格不会超过一兆字节。

2 个答案:

答案 0 :(得分:3)

我建议使用Paul Nielsen的AutoAudit

  

AutoAudit是一个SQL Server(2005,2008)创建的Code-Gen实用程序   审计跟踪触发器:

     
      
  • Created,CreatedBy,Modified,ModifiedBy和RowVersion(递增INT)列到表
  •   
  • 将事件记录到审核表
  •   
  • 更新记录到审核表的新旧值
  •   
  • 删除将所有最终值记录到审核表
  •   
  • 查看重建已删除的行
  •   
  • UDF重建行历史
  •   
  • 用于跟踪架构更改的架构审核触发器
  •   
  • 当Alter Table更改表格时重新编码gens触发
  •   

他最初的博文:CodeGen to Create Fixed Audit Trail Triggers

在生产中实施之前,建议您将数据库的备份还原到开发中并进行处理。

答案 1 :(得分: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

您可以根据需要制作任意数量的快照。所以我的建议是创建一个创建每日快照的脚本或任务,并将日期附加到快照名称。这样,您就可以在服务器上看到所有快照。

需要注意的重要事项:快照是只读的。