【问题标题】:How to take daily snapshots of a table如何拍摄一张桌子的每日快照
【发布时间】:2012-07-23 03:12:29
【问题描述】:

我正在建立一个销售数据库。其中一张表必须是销售代表及其指定区域的层次结构。 Ohese 代表和他们的领地每天都在变化,我需要每天跟踪那张桌子的具体情况。我需要每天为桌子拍摄快照。

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

这可能吗?

请记住,表格不会超过 1 兆字节左右。

【问题讨论】:

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


    【解决方案1】:

    我建议使用 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

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

    【讨论】:

    • 你能告诉我如何解决我的问题吗?
    • +1 这看起来很整洁。我打算建议一个审计触发器,它将数据复制到一个表结构中,其中包括复制的时间/日期,但这看起来可以很好地解决问题。
    • @MitchWheat 我不明白我将如何查询以查看特定日期的快照,因为并非所有数据都更改
    • @MitchWheat 我需要在特定时间查看整个表的状态
    • 查看 UDF 以重建行历史记录
    【解决方案2】:

    这适用于 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

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

    重要提示:快照是只读的。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-02-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-02-14
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多