

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

# 了解 Babelfish 中的分割
<a name="babelfish-partition"></a>

從 4.3.0 版開始，Babelfish 推出使用有限支援的資料表和索引分割。下列各節提供的詳細資訊，與在 Babelfish 中建立分割區函數、定義分割區結構，以及實作分割資料表和索引有關。

**Topics**
+ [Babelfish 中的分割簡介](#babelfish-partition-function-views)
+ [限制和解決方法](#babelfish-partition-limitations)

## Babelfish 中的分割簡介
<a name="babelfish-partition-function-views"></a>
+ **分割區函數：**
  + `CREATE PARTITION FUNCTION:` 定義如何分割資料表或索引，方法是指定分割欄類型和每個分割區的值範圍。
  + `DROP PARTITION FUNCTION:` 移除現有的分割區函數。
+ **分割區結構：**
  + `CREATE PARTITION SCHEME:` 定義分割區和檔案群組之間的對應。
**注意**  
在 Babelfish 中，會將檔案群組視為虛擬物件，檔案群組不代表實體儲存位置。
  + `DROP PARTITION SCHEME:` 移除現有的分割區結構。
+ **系統函數：**
  + `$PARTITION:` 此系統函數會傳回分割欄中指定值屬於指定分割資料表的分割區編號。
+ **分割的資料表和索引：**
  + `CREATE TABLE ... ON partition_scheme_name (partition_column_name):` 根據指定的分割區結構和分割欄建立分割的資料表。
  + `CREATE INDEX ... ON partition_scheme_name (partition_column_name):` 根據指定的分割區結構和分割欄建立分割的索引。
+ **分割中繼資料的系統檢視：**

  新增下列系統檢視，以提供與分割相關的中繼資料：
  + `sys.destination_data_spaces`
  + `sys.partitions`
  + `sys.partition_functions`
  + `sys.partition_parameters`
  + `sys.partition_range_values`
  + `sys.partition_schemes`

## 限制和解決方法
<a name="babelfish-partition-limitations"></a>

Babelfish 尚不支援下列 SQL Server 分割功能：
+ `ALTER PARTITION FUNCTION` 與 `ALTER PARTITION SCHEME`。
**注意**  
Babelfish 不支援分割和合併操作。在建立期間定義分割區函數中的所有分割區，因為您稍後無法新增或移除分割區。
+ 作為分割欄的運算欄。
+ 分割資料表的 `INSERT BULK` 和 `BCP` 公用程式。
+ 分割區函數的 `LEFT` 界限選項。
+ 分割區函數的 `SQL_VARIANT` 資料類型。
+ `TRUNCATE TABLE ... WITH PARTITION`.
+ `ALTER TABLE ... SWITCH PARTITION`.
+ 非對齊的分割索引，例如分割區結構以及與分割資料表不同的分割區欄。
+ 僅針對分割資料表上的完整載入任務，才支援從 Babelfish 來源進行 DMS 遷移。
+ Babelfish 不支援這些語法選項，但提供解決方法：
  + 在 CREATE TABLE 陳述式中使用具有限制條件或索引的分割區結構。
  + ALTER TABLE ... ADD CONSTRAINT ... ON partition\$1scheme\$1name (partition\$1column\$1name)。
**注意**  
您可以將 `babelfishpg_tsql.escape_hatch_storage_on_partition` 逃生艙設為忽略。這可讓剖析器忽略與限制條件或索引搭配使用的分割區結構選項，而後端會為每個分割區建立個別限制條件或索引。