長久以來,我們一直希望創建一個歷史不會丟失的案例管理系統。當做出更改時,我們希望記錄該更改,但有能力回到任何時間點並查看記錄的樣子。我想向Stack Overflow社區提出這個問題,看看有什麼辦法做到這一點,是否有技術已經到位,以實現這一目標?在SQL Server 2008數據庫中維護數據歷史的方法
9
A
回答
8
是的,這項技術絕對存在 - 這是一個努力實施它,並做到這一點是正確的。
什麼你正在尋找被稱爲時空數據庫 - 看到一些資源:
3
我不是當然如何像marc_s時間數據庫中提到的作品,但如果你使用SQL Server 2008或更高版本,可以利用其內置的變更數據捕獲(CDC)的功能優勢:
- Change Data Capture (MSDN)
- Basics of Change Data Capture (MSDN)
- Using Change Data Capture
- Sql Server 2008: Change Data Capture (CDC)
啓用CDC使用複製的事務日誌存儲插入,更新和刪除操作的表並創建表值函數,這些函數允許您檢索給定日期/時間的行,或僅檢索更改。
儘管如此,您不能單靠CDC,因爲您的交易日誌會變得難以駕馭,並且速度很慢。所以,你要做的就是:
- 使CDC,
- 使用相同的模式與原始表創建歷史表,但添加一對夫婦更列在關係存儲行版本信息(很像slowly-changing dimension OLAP數據庫),並
- 創建一個作業,這將定期輪詢CDC功能自去年負荷的變化,並將其推到歷史表
然後你可以再使用歷史表在查詢中,加入像往常一樣,但是與一個額外的謂詞來獲取記錄「as-of」,無論你想要什麼日期。
相關問題
- 1. 在店鋪數據庫中維護歷史數據
- 2. SQL Server 2008數據保護
- 3. 如何維護數據庫中的歷史更改
- 4. 在SQL Server 2008數據庫中保護數據的最佳做法
- 5. 在SQL Server 2005/2008中存儲歷史數據的最佳方式是什麼?
- 6. 數據庫維護
- 7. 數據庫歷史數據
- 8. SQL Server 2008維護
- 9. 保存數據庫歷史
- 10. SQL Server數據庫保護
- 11. SQL Server顯示歷史數據
- 12. 無法創建SQL Server 2008數據庫
- 13. SQL Server 2008中的數據庫備份
- 14. SQL Server 2008中的數據倉庫
- 15. SQL Server 2008 R2中的數據庫加密方法標準版
- 16. 在SQL Server 2008中維護「集合」的最有效方法?
- 17. SQL Server 2008維護計劃失敗,因爲數據庫正在使用
- 18. 舉行數據庫的歷史數據
- 19. 遍歷SQL Server 2008數據庫列中的XML文檔
- 20. 附加數據庫SQL Server 2008中
- 21. SQL Server 2008數據庫中學
- 22. 在SQL Server 2008上還原數據庫
- 23. 數據庫部分函數(sql server 2008)
- 24. 如何設計數據庫來維護庫存的歷史記錄
- 25. SQL Server如何維護GUID跨表在同一數據庫
- 26. 維護大量歷史數據的有效
- 27. 數據庫歷史化
- 28. 將SQL Server 2000數據庫合併到SQL Server 2008數據庫中
- 29. 數據庫歷史記錄
- 30. 複製數據庫的最佳方法(SQL Server 2008)
對於觸發器可以執行的操作來說,這看起來好像還有很多附加層,可以填充您提及的相同歷史記錄表。 – Chris 2010-10-06 20:30:33
這是真的;儘管取決於列的數量,但它也可能需要大量的觸發器。無論哪種方式都可以用編程方式編寫腳本,所以複雜性不應該太大。兩種方法都有其優點和缺點,哪種方式是正確的取決於您的要求。這裏有一個很好的討論: http:// sqlserverplanet。com/design/triggers-service-broker-cdc-or-change-tracking/ – utexaspunk 2010-10-06 23:20:36
我使用單獨的表格+觸發器來管理記錄歷史記錄,以及兩個其他表格來記錄何時和誰做了哪些記錄的更改。 +1觸發器! – Achilles 2011-10-03 00:03:05