0

我正在研究我們的數據庫應用程序(高度規範化模式)的歸檔選項,並希望得到專家的反饋。我們正在使用Sql Server 2005,但是如果某些東西只能在2008 R2中運行,那可能是我們的一個選擇。歸檔時間 - SQL Server

歸檔的主要原因是每年刪除舊數據。確定哪些對象可以歸檔的標準不會很簡單(即:不僅僅是按日期過濾,還涉及更多的考慮因素)。

歸檔需要是基本上在所述應用程序的按鈕(即:不是由數據庫服務器上實際DBA)。

數據應該可檢索,但可能通過特殊要求。也許一個對象及其所有相關的部分可以被搜索並返回到當前的數據庫中? (同樣,通過應用程序界面。)

另一個重要的要求是保持相關數據的完整性。如果一個存檔對象與一個非存檔對象有關,我想確保這個非存檔對象不能通過這個接口被刪除。目前,我們已經進行了多次檢查,以確保您無法刪除正在使用的項目,並且我毫不猶豫地更改所有這些檢查以加入_archive表格或使用新視圖。有另一種方法嗎?

我看了一下表/索引分區,雖然有趣的是,這聽起來像也許是工作的很多考慮多少存儲過程,視圖,索引等,我們使用。

+0

由於條件複雜,分區功能對您無效。 – JNK

回答

1

什麼是你的歸檔動機是什麼?

你提到要「刪除舊數據,」但既然你需要的是不斷面世,它沒有任何意義。

在你的情況下最容易做的事情將是一個「軟」檔案,你可以在所有的表格中添加一個Archived位字段來指示一行是否激活。然後,所有現有的參考檢查都會保留,但您需要在視圖或查詢中的該位上添加過濾器,並將其添加到大多數索引中。

你並不真的需要做的卸載,因爲你不能移動數據從服務器反正。

+0

謝謝你的回答。我意識到我沒有提到速度作爲歸檔的原因,但是你能否告訴我是否會有速度優勢(假設索引反映了這一點),並且如果優勢將等於或接近實際將數據移除到不同的表格? – user992228

+0

好處與卸載到其他表格的效果差不多。由於數據本身不會移動,所以也不會有插入/刪除所有這些行的開銷,而且您也不會有碎片需要處理。 – JNK

+0

再次感謝您的回答。 – user992228