我正在建立一个销售数据库。其中一个表必须是销售代表及其分配领Territory的层次结构。这些代表及其领Territory每天都会发生变化,我需要跟踪每天该表的确切外观。我需要每天对该表进行快照。
我想知道我需要做什么或如何存储表中的数据,才能够准确地知道表中的数据在某个时间点上是什么样子。
这可能吗?
请记住,表不会超过1MB左右。
我正在建立一个销售数据库。其中一个表必须是销售代表及其分配领Territory的层次结构。这些代表及其领Territory每天都会发生变化,我需要跟踪每天该表的确切外观。我需要每天对该表进行快照。
我想知道我需要做什么或如何存储表中的数据,才能够准确地知道表中的数据在某个时间点上是什么样子。
这可能吗?
请记住,表不会超过1MB左右。
我建议使用Paul Nielsen的AutoAudit:
AutoAudit是一个SQL Server(2005、2008)代码生成实用程序,可以创建带有以下内容的审计跟踪触发器:
- Created,CreatedBy,Modified,ModifiedBy和RowVersion(递增INT)列到表格
- 将插入事件记录到审核表中
- 更新旧值和新值记录到审核表中
- 删除将所有最终值记录到审核表中
- 查看以重构已删除的行
- UDF以重构行历史记录
- 模式审核触发器以跟踪模式更改
- 当Alter Table更改表时重新生成触发器
他的原始博客文章:CodeGen to Create Fixed Audit Trail Triggers
在您在生产中实施之前,请建议您将数据库备份还原到开发环境中并在其中进行操作。
这是针对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