Sql-Server
如何使分區或文件組停止服務
我是一位經驗豐富的 SQL Server DBA,但對分區不熟悉,我有幾個問題。使用 SQL Server 2008 R2 企業版。
我繼承了一個每天增長約 10 GB 的大型客戶指標數據庫。該數據庫目前由一個文件組 (PRIMARY) 中的一個大型數據文件組成。所有表都有一個名為 的日期時間列
InsertedDate
。我想對數據進行水平分區InsertedDate
,每個日曆週使用一個單獨的數據文件。在測試環境中,我向這個數據庫添加了所需的附加文件組和數據文件,
InsertedDate
在每個表中放置了一個聚集索引,並設置了分區函式和分區方案。通過查詢sys.partitions
和其他系統表,我已經確認數據現在物理上駐留在正確的分區和數據文件中。除其他外,目標是:
- 通過僅備份
PRIMARY
目前日期範圍的文件組和文件組來減少備份時間(我目前正在執行每晚的完整備份)。一旦日期範圍過去,該分區將永遠不會被再次寫入,因此我想將文件組設置為只讀並最後一次備份。- 最終能夠使分區“停止服務”。3 個月後,不再需要將舊數據保持線上狀態,因此我想將這些數據離線(但如有必要,可以再次將這些數據重新線上)。
問題:
1)我如何在這個分區數據庫上執行備份而不必備份整個數據庫?我可以備份單個文件組,但要恢復它需要數據庫的其餘部分,這違背了使用多個較小數據文件的目的。
- 如何使分區停止服務?我讀過關於切換的文章,但似乎只有當您想在同一數據庫內的分區之間移動數據時才有效。我希望能夠簡單安全地使一系列數據離線(並在必要時將其重新聯機)。
我無法回答問題 1)。
但要回答問題 2):
您所要求的被稱為“滑動視窗場景”。
如果要消除包含不再需要的數據的分區,則必須執行以下步驟:
- 在與要刪除的分區相同的文件組上創建一個表(通常,此表稱為臨時表)。
該表必須具有與分區表完全相同的結構,包括索引。
- 將分區切換到臨時表
- 您必須從分區函式 vie 中刪除對文件組的引用
MERGE RANGE ...
- 現在您可以截斷臨時表並將其刪除。剩下的是您也可以刪除的空文件組。
有關此的更多詳細資訊,請訪問http://technet.microsoft.com/en-us/library/aa964122.aspx和有關分區的白皮書,可從http://msdn.microsoft.com/en-us/library/獲得dd578580%28v=sql.100%29.aspx。
對於“2)如何使分區停止服務?”
這可能是一個糟糕的主意,但是……你能不能:
- 使數據庫離線
- 刪除 FileGroup 中的物理文件
- 使數據庫聯機
- 更改分區以排除文件組
- 重建索引