將現有的索引移至不同的檔案群組
適用於:SQL Server Azure SQL 受控執行個體
此主題描述如何使用 SQL Server Management Studio 或 Transact-SQL,在 SQL Server 中將目前檔案群組的現有索引移到不同的檔案群組。
針對設計考量,包括您可能想要在不同的檔案群組上放置非叢集索引的原因,請參閱檔案群組或分割區配置上的索引放置。
開始之前
限制事項
如果資料表含有叢集索引,則將叢集索引移到新的檔案群組也會使資料表移到該檔案群組中。
您無法使用 Management Studio 移動使用 UNIQUE 或 PRIMARY KEY 條件約束建立的索引。 若要移動這些索引,請使用 Transact-SQL 中的 CREATE INDEX 陳述式搭配 (DROP_EXISTING=ON) 選項。
安全性
權限
需要資料表或檢視表的 ALTER 權限。 使用者必須是 系統管理員 固定伺服器角色的成員,或是 db_ddladmin 和 db_owner 固定資料庫角色的成員。
使用 SQL Server Management Studio
若要使用資料表設計工具將現有的索引移至不同的檔案群組
在 [物件總管] 中,按一下加號展開資料庫,此資料庫包含的資料表中有您要移動的索引。
按一下加號展開 [資料表] 資料夾。
以滑鼠右鍵按一下包含您要移動之索引的資料表,然後選取 [設計]。
在 [資料表設計工具] 功能表上,按一下 [索引/索引鍵]。
選取您要移動的索引。
在主要方格中,展開 [資料空間規格]。
選取 [檔案群組或分割區配置名稱] ,然後從清單中選取要將索引移至其中的檔案群組或分割區配置。
按一下 [關閉] 。
在 [檔案] 功能表上,選取 [儲存 table_name]。
若要在物件總管中將現有的索引移到不同的檔案群組
在 [物件總管] 中,按一下加號展開資料庫,此資料庫包含的資料表中有您要移動的索引。
按一下加號展開 [資料表] 資料夾。
按一下加號,展開包含您要移動之索引的資料表。
按一下加號展開 [索引] 資料夾。
以滑鼠右鍵按一下您要移動的索引,然後選取 [屬性]。
在 [選取頁面]底下,選取 [儲存體]。
選取要移動索引的檔案群組。
如果資料表或索引已分割,請選取移動索引所使用的分割區配置。 如需有關分割區索引的詳細資訊,請參閱< Partitioned Tables and Indexes>。
如果您要移動叢集索引,可使用線上處理。 線上處理允許並行使用者在索引作業期間,存取基礎資料和非叢集索引。 如需詳細資訊,請參閱 Perform Index Operations Online。
在使用 SQL Server 的多處理器電腦上,您可以指定平行處理原則的最大程度值,藉以設定用來執行索引陳述式的處理器數目。 並非每個 SQL Server 版本都可使用平行索引操作功能。 如需 SQL Server 版本支援的功能清單,請參閱 SQL Server 2016 版本支援的功能。 如需平行索引操作的詳細資訊,請參閱設定平行索引操作。
按一下 [確定]。
下列資訊位於 [索引屬性 - index_name] 對話框的 [記憶體] 頁面上:
檔案群組
在指定的檔案群組中儲存索引。 清單僅顯示標準 (資料列) 檔案群組。 預設清單選取項目為資料庫的 PRIMARY 檔案群組。
檔案資料流檔案群組
為 FILESTREAM 資料指定檔案群組。 此清單只會顯示 FILESTREAM 檔案群組。 預設清單選取項目為資料庫的 PRIMARY FILESTREAM 檔案群組。
分割區配置
在資料分割結構描述中儲存索引。 按一下 [資料分割配置] 以啟用下列方格。 預設清單選取項目是用來儲存資料表資料的資料分割配置。 當您在清單中選取不同的資料分割配置時,會更新方格中的資訊。
如果資料庫中沒有資料分割結構描述,則無法使用資料分割結構描述選項。
檔案資料流資料分割配置
指定資料分割配置的 FILESTREAM 資料。 資料分割配置必須對稱於在 [資料分割配置] 選項中所指定的配置。
如果資料表不是資料分割,則此欄位空白。
資料分割結構描述參數
顯示參與資料分割結構描述的資料行名稱。
資料表資料行
選取資料表或檢視以對應至資料分割結構描述。
資料行資料類型
顯示有關資料行的資料類型資訊。
注意
如果資料表資料行是計算資料行, [資料行資料類型] 就會顯示「計算資料行」。
移動索引時,允許線上處理 DML 陳述式
允許使用者在索引作業期間存取基礎資料表或叢集索引資料,以及與非叢集索引相關聯的任何項目。
注意
此選項不適用於 XML 索引,或索引為已停用的叢集索引時亦不適用。
設定最大平行程度
限制平行計畫執行期間要使用的處理器數目。 預設值 (0) 會使用實際可用的 CPU 數目。 將值設定為 1 會抑制平行計畫的產生;將值設定為大於 1 的數字則會限制單一查詢執行所使用的處理器最大數目。 此選項僅會在對話方塊處於 [重建] 或 [重新建立] 狀態時可用。
注意
如果指定的數值大於可用的 CPU 數目,就會使用可用 CPU 的實際數目。
使用 TRANSACT-SQL
若要將現有的索引移至不同的檔案群組
在物件總管中,連線到資料庫引擎的執行個體。
在標準列上,按一下 [新增查詢] 。
複製下列範例並將其貼到查詢視窗中,然後按一下 [執行] 。
USE AdventureWorks2022; GO -- Creates the TransactionsFG1 filegroup on the AdventureWorks2022 database ALTER DATABASE AdventureWorks2022 ADD FILEGROUP TransactionsFG1; GO /* Adds the TransactionsFG1dat3 file to the TransactionsFG1 filegroup. Please note that you will have to change the filename parameter in this statement to execute it without errors. */ ALTER DATABASE AdventureWorks2022 ADD FILE ( NAME = TransactionsFG1dat3, FILENAME = 'C:\Program Files\Microsoft SQL Server\MSSQL13\MSSQL\DATA\TransactionsFG1dat3.ndf', SIZE = 5MB, MAXSIZE = 100MB, FILEGROWTH = 5MB ) TO FILEGROUP TransactionsFG1; GO /*Creates the IX_Employee_OrganizationLevel_OrganizationNode index on the TransactionsPS1 filegroup and drops the original IX_Employee_OrganizationLevel_OrganizationNode index. */ CREATE NONCLUSTERED INDEX IX_Employee_OrganizationLevel_OrganizationNode ON HumanResources.Employee (OrganizationLevel, OrganizationNode) WITH (DROP_EXISTING = ON) ON TransactionsFG1; GO
下一步
如需詳細資訊,請參閱 CREATE FULLTEXT CATALOG (TRANSACT-SQL)。