Sql-Server

將所有堆表移動到 SQL Server 中的另一個文件組

  • September 26, 2020

在 SQL Server 2017 中,我想將數據庫中的所有堆移動到輔助文件組。最簡單的方法是什麼?

此問題僅適用於非聚集索引。

https://stackoverflow.com/questions/4237238/moving-all-non-clustered-indexes-to-another-filegroup-in-sql-server

在優化舊的遺留數據庫的過程中。

  • 我想編寫一個腳本來移動所有帶有游標循環的堆表,類似於上面的 Stack Overflow 連結。

據我所知,您有兩種選擇:

  • 物理移動數據。在輔助文件組中創建一個新的空堆/複製數據/重命名對象,隱式事務中的所有內容。並且不要忘記編寫索引、約束等腳本。
  • 在輔助文件組中創建聚集索引,然後將其刪除。

我更喜歡第一個選項。

以下解決方案有助於實現目標:-

  1. 在表上創建一個聚集索引並提及將其移動到輔助文件組。請參閱下面的連結以供參考。 https://www.mssqltips.com/sqlservertip/2442/move-data-between-sql-server-database-filegroups/
  2. 在輔助文件組中創建另一個具有相同列的表。以塊的形式將數據從一個表複製到另一個表以優化性能。這會將數據複製到輔助文件分配單元中。然後刪除第一個表並重命名輔助表。如果表有依賴關係,可能會有一些步驟。

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