Sql-Server

如何使分區或文件組停止服務

  • July 5, 2016

我是一位經驗豐富的 SQL Server DBA,但對分區不熟悉,我有幾個問題。使用 SQL Server 2008 R2 企業版。

我繼承了一個每天增長約 10 GB 的大型客戶指標數據庫。該數據庫目前由一個文件組 (PRIMARY) 中的一個大型數據文件組成。所有表都有一個名為 的日期時間列InsertedDate。我想對數據進行水平分區InsertedDate,每個日曆週使用一個單獨的數據文件。

在測試環境中,我向這個數據庫添加了所需的附加文件組和數據文件,InsertedDate在每個表中放置了一個聚集索引,並設置了分區函式和分區方案。通過查詢sys.partitions和其他系統表,我已經確認數據現在物理上駐留在正確的分區和數據文件中。

除其他外,目標是:

  • 通過僅備份PRIMARY目前日期範圍的文件組和文件組來減少備份時間(我目前正在執行每晚的完整備份)。一旦日期範圍過去,該分區將永遠不會被再次寫入,因此我想將文件組設置為只讀並最後一次備份。
  • 最終能夠使分區“停止服務”。3 個月後,不再需要將舊數據保持線上狀態,因此我想將這些數據離線(但如有必要,可以再次將這些數據重新線上)。

問題:

1)我如何在這個分區數據庫上執行備份而不必備份整個數據庫?我可以備份單個文件組,但要恢復它需要數據庫的其餘部分,這違背了使用多個較小數據文件的目的。

  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)如何使分區停止服務?”

這可能是一個糟糕的主意,但是……你能不能:

  1. 使數據庫離線
  2. 刪除 FileGroup 中的物理文件
  3. 使數據庫聯機
  4. 更改分區以排除文件組
  5. 重建索引

引用自:https://dba.stackexchange.com/questions/44762