Share via


修改資料分割資料表與索引

您可以使用下列方法修改資料分割資料表與索引:

  • 修改資料分割函數,以重新分割參與其中的任何資料表或索引。

  • 修改資料分割結構描述,以指定用來保存新加入之資料分割的檔案群組。

  • 將非資料分割資料表轉換成資料分割資料表。

  • 將資料分割資料表轉換成非資料分割資料表。

  • 藉由加入、移動或移除資料分割來傳送資料。

修改資料分割函數

您可以在資料分割資料表或索引的資料分割函數中,加上或減去指定的資料分割數 (遞增為 1),藉此變更資料表或索引的資料分割方式。

若要加入資料分割,可以將現有資料分割「拆解」為兩個資料分割,並重新定義新資料分割的界限。若要卸除資料分割,可以將兩個資料分割的界限「合併」成為一個。最後這個動作會重新擴展一個資料分割,並使另一個資料分割成為未指派。

重要事項重要事項

當加入資料分割時,必須存在檔案群組,而且使用 NEXT USED 屬性來標記,以保存新資料分割。如需如何在資料分割結構描述中指定 NEXT USED 檔案群組的詳細資訊,請參閱本主題中後面的<修改資料分割結構描述>。

ALTER PARTITION FUNCTION 只能用來將一個資料分割拆解成兩個,或將兩個資料分割合併為一個。若要變更資料表或索引的資料分割方式 (例如,從 10 個資料分割變更成 5 個),您可以使用下列任何一個選項。視系統組態而定,這些選項的資源耗用量可能有所不同。

  • 以所要的資料分割函數建立新資料分割資料表,然後使用 INSERT INTO...SELECT FROM 陳述式,將舊資料表的資料插入新資料表。

  • 建立堆積的資料分割叢集索引。

    [!附註]

    卸除的資料分割索引將造成資料分割堆積。

  • 使用 Transact-SQL CREATE INDEX 命令搭配 DROP EXISTING = ON 子句,卸除和重建現有的資料分割索引。

  • 執行 ALTER PARTITION FUNCTION 陳述式的序列。

SQL Server 不提供修改資料分割函數的複寫支援。如果您要變更發行集資料庫中的資料分割函數,必須在訂閱資料庫中手動執行此作業。

若要修改資料分割函數

修改資料分割結構描述

您可以指定檔案群組來保存下一個要加入資料分割資料表的資料分割,藉此修改資料分割結構描述。作法是,將 NEXT USED 屬性指派給檔案群組。NEXT USED 屬性可以指派給空的檔案群組或已保存資料分割的檔案群組。換句話說,檔案群組可以保存一個以上的資料分割。

若要修改資料分割結構描述

將非資料分割資料表轉換成資料分割資料表

有兩個方法可以將現有非資料分割資料表轉換成資料分割資料表。

其中一個方法是使用 CREATE INDEX 陳述式,在資料表上建立資料分割叢集索引。這個動作類似在任何資料表上建立叢集索引,因為 SQL Server 本質上會以叢集索引格式卸除資料表,然後再重建。如果資料表已套用資料分割叢集索引,您可以使用 CREATE INDEX 搭配 DROP EXISTING = ON 子句,在資料分割結構描述上卸除索引和重建索引。

如需叢集索引的詳細資訊,請參閱<叢集索引設計指導方針>。

另一個方法是,使用 Transact-SQL ALTER TABLE SWITCH 陳述式,將資料表的資料切換至只有一個資料分割的 RANGE 資料分割資料表。在轉換發生之前,這個資料分割資料表必須已存在,而且它的單一資料分割必須是空的。如需切換資料分割的詳細資訊,請參閱<使用資料分割切換有效傳送資料>。當資料表修改成資料分割資料表之後,您可以修改它的資料分割函數以加入資料分割,如前面的<修改資料分割函數>中所述。

若要將現有資料表轉換成資料分割資料表

將資料分割資料表轉換成非資料分割資料表

將資料分割資料表變更成非資料分割資料表,只需要修改資料分割資料表的資料分割函數,讓資料表只包含一個資料分割。雖然技術上它仍是資料分割資料表,但這個狀態不會影響您要在資料表上執行的任何後續作業。

如果已經有資料分割叢集索引套用至資料表,您可以卸除索引並重建索引為非資料分割索引,取得相同結果。作法是使用 Transact-SQL CREATE INDEX 命令並搭配 DROP EXISTING = ON 子句。

若要將資料分割資料表轉換成不含資料分割的標準資料表

以資料分割切換來傳送資料

Transact-SQL ALTER TABLE...SWITCH 陳述式可讓您在資料分割資料表之間快速、有效率地傳送資料區塊。如需詳細資訊,請參閱<使用資料分割切換有效傳送資料>。