【发布时间】:2012-07-23 03:12:29
【问题描述】:
我正在建立一个销售数据库。其中一张表必须是销售代表及其指定区域的层次结构。 Ohese 代表和他们的领地每天都在变化,我需要每天跟踪那张桌子的具体情况。我需要每天为桌子拍摄快照。
我想知道我必须做什么或如何将数据存储在表中,以便能够准确地知道表中的数据在某个时间点是什么。
这可能吗?
请记住,表格不会超过 1 兆字节左右。
【问题讨论】:
标签: sql sql-server sql-server-2008
我正在建立一个销售数据库。其中一张表必须是销售代表及其指定区域的层次结构。 Ohese 代表和他们的领地每天都在变化,我需要每天跟踪那张桌子的具体情况。我需要每天为桌子拍摄快照。
我想知道我必须做什么或如何将数据存储在表中,以便能够准确地知道表中的数据在某个时间点是什么。
这可能吗?
请记住,表格不会超过 1 兆字节左右。
【问题讨论】:
标签: sql sql-server sql-server-2008
我建议使用 Paul Nielsen 的AutoAudit:
AutoAudit 是一种 SQL Server(2005、2008)代码生成实用程序,可创建 审计跟踪触发器:
- 表中的 Created、CreatedBy、Modified、ModifiedBy 和 RowVersion(递增 INT)列
- 插入记录到审计表的事件
- 更新记录到审计表的新旧值
- 删除所有最终值到审计表的日志
- 视图重建已删除的行
- UDF 重建行历史记录
- 架构审计触发器跟踪架构更改
- Alter Table 更改表时触发 Re-code-gens
他的原博文: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
请参阅此页面以供参考:http://msdn.microsoft.com/en-us/library/ms175876.aspx
您可以根据需要制作任意数量的快照。所以我的建议是创建一个脚本或任务来创建每日快照并将日期附加到快照名称。这样您就可以在服务器上看到所有快照。
重要提示:快照是只读的。
【讨论】: