

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

# DMS 結構描述轉換中的選取規則
<a name="sc-selection-rules"></a>

DMS 結構描述轉換會將資料庫結構描述從一個引擎轉換為另一個引擎。您可以使用*選取規則*來控制 DMS 結構描述轉換在評估、轉換和匯出等操作期間對哪些資料庫物件執行動作。選擇規則是您透過 `SelectionRules` 參數 （或在 CLI `--selection-rules`中） AWS 傳遞的 JSON 物件。如果沒有選取規則，則 操作無需採取任何動作。使用規則，您可以將操作範圍限定為單一物件、整個結構描述、整個資料庫 （適用於 Microsoft SQL Server 和 SAP ASE (Sybase ASE) 來源），或符合模式的物件群組。

**注意**  
當您使用 AWS 管理主控台時，DMS 結構描述轉換會根據您在遷移專案 UI 中的選擇自動建構選取規則。只有在使用 DMS 結構描述轉換 API 或 CLI AWS 時，才需要直接寫入選取規則。

您可以在遷移專案的來源和目標端使用相同的規則形狀。物件定位器中的 `server-name` 欄位指定規則是針對來源資料提供者還是目標資料提供者。單一遷移專案通常會同時使用兩種類型的規則：用於評估和轉換的來源規則；用於 SQL 匯出的目標規則。

## 選擇規則格式
<a name="dms-sc-selection-rule-format"></a>

選取規則文件是具有單一`rules`陣列的 JSON 物件。陣列中的每個項目都是一個規則，每個規則都必須包含下列所有欄位。


| 參數 | Value | 說明 | 
| --- | --- | --- | 
| rule-type | selection | 識別規則類型的值。對於所有選擇規則，將此設定為 selection。必要參數。 | 
| rule-id | 數值 （整數） 值。 | 規則的唯一數字識別符。必要參數。 | 
| rule-name | 英數值。 | 識別規則的唯一名稱。必要參數。 | 
| rule-action | explicit、include 或 exclude | 決定物件定位器如何解譯的值。請參閱 [規則動作](#dms-sc-selection-rule-actions)。必要參數。 | 
| object-locator | 包含引擎特定定位器金鑰的 JSON 物件。 | 識別規則套用之資料庫物件的物件。請參閱 [物件定位器階層](#dms-sc-selection-rule-object-locator)。必要參數。 | 

下列最低範例以來源伺服器上的一個結構描述為目標。

```
{
  "rules": [
    {
      "rule-type": "selection",
      "rule-id": "1",
      "rule-name": "{{rule_name}}",
      "rule-action": "explicit",
      "object-locator": {
        "server-name": "{{source_server}}",
        "schema-name": "{{schema_name}}"
      }
    }
  ]
}
```

**注意**  
使用 AWS CLI 時，您可以透過下列方式傳遞選擇規則。這是標準 AWS CLI 功能，可與任何字串參數搭配使用。  
內嵌：`--selection-rules '{"rules":[...]}'`（使用單引號以避免逸出 JSON 雙引號）
相對路徑： `--selection-rules file://example-rules.json`
絕對路徑： `--selection-rules file:///tmp/example-rules.json`

內的所有欄位值`object-locator`都必須是非空白字串。空白字串 （例如 `"schema-name": ""`) 會因錯誤而遭到拒絕。

**注意**  
`database-name` 金鑰僅適用於 Microsoft SQL Server 和 SAP ASE (Sybase ASE) 來源。在任何其他來源引擎的定位器`database-name`中傳送會被拒絕為不支援的金鑰。

## 撰寫規則
<a name="dms-sc-writing-rules"></a>

### 物件定位器階層
<a name="dms-sc-selection-rule-object-locator"></a>

透過引擎特定金鑰的階層來`object-locator`識別一或多個資料庫物件。每個金鑰都會縮小範圍；省略低階金鑰以擴大範圍。階層取決於來源引擎：
+ **Microsoft SQL Server 和 SAP ASE (Sybase ASE)** — `server-name`` → ``database-name`` → ``schema-name`` → `物件層級金鑰 （例如 `table-name`)。這些引擎在伺服器和結構描述之間具有額外的`database-name`層級。
+ **所有其他引擎** (Oracle、適用於 z/OS 的 IBM Db2，以及所有目標引擎：PostgreSQL、Aurora PostgreSQL、MySQL、Aurora MySQL 和 IBM Db2 LUW) — `server-name`` → ``schema-name`` → `物件層級金鑰。這些引擎沒有`database-name`關卡；結構描述是直接在 下的頂端容器`server-name`。

下列範例會選取一個特定的 Microsoft SQL Server 資料表。

```
{
  "rules": [
    {
      "rule-type": "selection",
      "rule-id": "1",
      "rule-name": "{{rule_name}}",
      "rule-action": "explicit",
      "object-locator": {
        "server-name": "{{source_server}}",
        "database-name": "{{database_name}}",
        "schema-name": "{{schema_name}}",
        "table-name": "{{table_name}}"
      }
    }
  ]
}
```

若要將範圍擴大到整個結構描述，請省略分葉層級索引鍵。然後，規則會套用至該結構描述中的所有可定址物件類型，包括資料表、檢視、程序、函數、序列，以及來源引擎公開的任何其他物件。

```
{
  "rules": [
    {
      "rule-type": "selection",
      "rule-id": "1",
      "rule-name": "{{rule_name}}",
      "rule-action": "explicit",
      "object-locator": {
        "server-name": "{{source_server}}",
        "database-name": "{{database_name}}",
        "schema-name": "{{schema_name}}"
      }
    }
  ]
}
```

您可以使用的定位器金鑰取決於來源或目標引擎。如需每個引擎的完整金鑰參考，請參閱 [依資料庫的物件定位器索引鍵](#dms-sc-selection-rule-locator-keys)。

### 來源規則和目標規則
<a name="dms-sc-selection-rule-source-vs-target"></a>

沒有明確`rule-type`欄位會將規則標記為「來源」或「目標」。您可以完全透過 中的`server-name`值來控制差異`object-locator`：如果 `server-name`符合**來源**資料提供者，則規則會以來源中繼資料樹為目標；如果 符合**目標**資料提供者，則規則以目標中繼資料樹為目標。

對於 `server-name`，您可以使用：
+ 在資料提供者中設定的**伺服器名稱**值。這通常是主機名稱或 IP 地址，但必須與資料提供者中存放的值完全相符，而不是解析為相同機器的不同 DNS 名稱或 IP。
+ 資料提供者**的資源 ID**：其 ARN 的最後一個區段 （例如，如果 ARN 為 `arn:aws:dms:us-east-1:111122223333:data-provider:EXAMPLEABCDEFGHIJKLMNOPQRS`，則資源 ID 為 `EXAMPLEABCDEFGHIJKLMNOPQRS`)。

### 規則動作
<a name="dms-sc-selection-rule-actions"></a>

使用 `rule-action` 欄位指定 DMS 結構描述轉換如何解譯物件定位器內的值。您只能搭配 `include`和 使用萬用字元`exclude`。


| Value | Behavior (行為) | 使用時機 | 
| --- | --- | --- | 
| `"include"` | 選取名稱符合模式的所有物件。支援 `%`（任何零個或多個字元的序列） 和 `_`（任何單一字元） 作為萬用字元。使用 `[_]`來比對常值底線，並使用 `[%]`來比對常值百分比字元。 | 使用 來比對具有共用命名模式的物件群組。 | 
| `"exclude"` | 從先前`include`規則已選取的集合中移除物件。沒有前述 的`exclude`規則`include`沒有效果。 | 使用 從更廣泛的 切出例外狀況`include`。 | 
| `"explicit"` | 完全選取具名物件。每個定位器值，包括 `schema-name`、 `database-name`和任何分葉索引鍵，例如 `table-name`或 `scalar-function-name`，都會比對為文字字串。萬用字元，例如 `%`、`[`、 `_`和 在 下`]`沒有特殊意義`explicit`。 | 當您知道要採取行動的每個物件的確切名稱時，請使用 。 | 

**注意**  
有些操作只接受`"explicit"`規則，不支援 `"include"`或 `"exclude"`。檢查特定操作的 [AWS API 參考](https://docs.aws.amazon.com/dms/latest/APIReference/API_Operations.html)，以確認其支援哪些規則動作。

## 物件定位器參考
<a name="dms-sc-locator-reference"></a>

### 依資料庫的物件定位器索引鍵
<a name="dms-sc-selection-rule-locator-keys"></a>

下列索引標籤顯示每個支援資料庫的定位器索引鍵。

------
#### [ SQL Server ]


| 金錀 | 選取 | 
| --- | --- | 
| `server-name` | 伺服器。 | 
| `database-name` | 伺服器上的資料庫。 | 
| `schema-name` | 資料庫內的結構描述。 | 
| `table-name` | 根據預設，資料表或與 搭配使用時的檢視`"table-type": "view"`。 | 
| `table-type` | `"table"` （預設） 或 `"view"`。 | 
| `procedure-name` | 預存程序。 | 
| `scalar-function-name` | 純量值函數。 | 
| `table-valued-function-name` | 資料表值函數。 | 
| `inline-function-name` | 內嵌函數。 | 
| `aggregate-function-name` | 彙總函數。 | 
| `synonym-name` | 同義詞。 | 
| `sequence-name` | 序列。 | 
| `type-name` | 類型。 | 
| `table-type-name` | 資料表類型。 | 
| `user-defined-type-name` | 使用者定義的類型。 | 
| `xml-schema-collection-name` | XML 結構描述集合。 | 
| `category-name` | 物件類別。使用 以物件的整個類別為目標；請參閱 [依引擎的類別名稱](#dms-sc-category-names)。 | 

------
#### [ Oracle ]


| 金錀 | 選取 | 
| --- | --- | 
| `server-name` | 伺服器。 | 
| `schema-name` | 結構描述 (Oracle 使用者）。 | 
| `table-name` | 根據預設，資料表或與 搭配使用時的檢視`"table-type": "view"`。 | 
| `table-type` | `"table"` （預設） 或 `"view"`。 | 
| `procedure-name` | 預存程序。 | 
| `function-name` | 一個函數。 | 
| `package-name` | 套件。 | 
| `sequence-name` | 序列。 | 
| `synonym-name` | 同義詞。 | 
| `type-name` | 使用者定義的類型。 | 
| `materialized-view-name` | 具體化視觀表。 | 
| `category-name` | 物件類別。使用 以物件的整個類別為目標；請參閱 [依引擎的類別名稱](#dms-sc-category-names)。 | 

------
#### [ SAP ASE (Sybase ASE) ]


| 金錀 | 選取 | 
| --- | --- | 
| `server-name` | 伺服器。 | 
| `database-name` | 伺服器上的資料庫。 | 
| `schema-name` | 資料庫內的結構描述。 | 
| `table-name` | 根據預設，資料表或與 搭配使用時的檢視`"table-type": "view"`。 | 
| `table-type` | `"table"` （預設） 或 `"view"`。 | 
| `materialized-view-name` | 具體化視觀表。 | 
| `procedure-name` | 預存程序。 | 
| `scalar-function-name` | 純量值函數。 | 
| `table-valued-function-name` | 資料表值函數。 | 
| `user-defined-type-name` | 使用者定義的類型。 | 
| `default-name` | 使用者定義的預設值。`Describe*` 只能透過 連線。 | 
| `category-name` | 物件類別。使用 以物件的整個類別為目標；請參閱 [依引擎的類別名稱](#dms-sc-category-names)。 | 

------
#### [ PostgreSQL ]


| 金錀 | 選取 | 
| --- | --- | 
| `server-name` | 伺服器。 | 
| `schema-name` | 結構描述。 | 
| `table-name` | 資料表或檢視；使用 `table-type`來區分。 | 
| `function-name` | 一個函數。 | 
| `procedure-name` | 預存程序。 | 
| `sequence-name` | 序列。 | 
| `materialized-view-name` | 具體化視觀表。 | 
| `type-name` | 使用者定義的類型。 | 
| `domain-name` | 網域。 | 
| `category-name` | 物件類別。使用 以物件的整個類別為目標；請參閱 [依引擎的類別名稱](#dms-sc-category-names)。 | 

------
#### [ MySQL ]


| 金錀 | 選取 | 
| --- | --- | 
| `server-name` | 伺服器。 | 
| `schema-name` | 結構描述。 | 
| `table-name` | 資料表或檢視；使用 `table-type`來區分。 | 
| `procedure-name` | 預存程序。 | 
| `function-name` | 一個函數。 | 
| `event-name` | 事件。 | 
| `category-name` | 物件類別。使用 以物件的整個類別為目標；請參閱 [依引擎的類別名稱](#dms-sc-category-names)。 | 

------
#### [ IBM Db2 for z/OS ]


| 金錀 | 選取 | 
| --- | --- | 
| `server-name` | 伺服器。 | 
| `schema-name` | 結構描述。 | 
| `table-name` | 資料表、檢視或全域暫時資料表；使用 `table-type` 來區分。 | 
| `table-type` | `"table"` （預設） 或 `"view"`。 | 
| `procedure-name` | 預存程序或外部程序。 | 
| `function-name` | 函數 （內嵌、純量、來源、資料表或外部函數）。 | 
| `sequence-name` | 序列。 | 
| `alias-name` | 別名。無 PostgreSQL 目標模型；`StartMetadataModelExportAsScript`搭配 使用`Origin: SOURCE`。 | 
| `mqtable-name` | 具體化查詢表 (MQT)。無 PostgreSQL 目標模型。 | 
| `type-name` | 使用者定義的類型 （目的地類型或結構化類型）。無 PostgreSQL 目標模型。 | 
| `category-name` | 物件類別。使用 以物件的整個類別為目標；請參閱 [依引擎的類別名稱](#dms-sc-category-names)。 | 

------
#### [ IBM Db2 LUW ]


| 金錀 | 選取 | 
| --- | --- | 
| `server-name` | 伺服器。 | 
| `schema-name` | 結構描述。 | 
| `table-name` | 資料表或檢視；使用 `table-type`來區分。 | 
| `procedure-name` | 預存程序。 | 
| `function-name` | 函數 （純量、來源或資料表函數）。 | 
| `sequence-name` | 序列。 | 
| `module-name` | 模組。 | 
| `category-name` | 物件類別。使用 以物件的整個類別為目標；請參閱 [依引擎的類別名稱](#dms-sc-category-names)。 | 

------

## 依引擎的類別名稱
<a name="dms-sc-category-names"></a>

選取規則中的`category-name`值以整個物件類別為目標，而非個別物件。類別名稱為引擎特定且區分大小寫。操作是否接受`category-name`取決於操作 — 檢查您正在使用之操作的 [AWS API 參考](https://docs.aws.amazon.com/dms/latest/APIReference/API_Operations.html)。以下索引標籤涵蓋來源和目標引擎。

**重要**  
將類別名稱從一個引擎傳送至為不同引擎設定的專案，會傳回錯誤。

------
#### [ SQL Server ]

下列類別名稱適用於 Microsoft SQL Server 來源。


| `category-name` 值 | 其分組的內容 | 
| --- | --- | 
| `Tables` | 基礎資料表。 | 
| `Views` | 檢視。 | 
| `Procedures` | 儲存程序. | 
| `SQL scalar functions` | 純量 T-SQL 函數。 | 
| `SQL table-valued functions` | 多陳述式資料表值函數。 | 
| `SQL inline functions` | 內嵌資料表值函數。 | 
| `Aggregate functions` | 使用者定義的彙總函數。 | 
| `Synonyms` | T-SQL 同義詞。 | 
| `Sequences` | 序列物件。 | 
| `Types` | XML 結構描述集合和資料欄類型。 | 
| `Table types` | 資料表類型的參數宣告。 | 
| `User-Defined Types` | 別名和 CLR 使用者定義的類型。 | 
| `XML Schema Collections` | XML 結構描述集合。 | 

------
#### [ Oracle ]

下列類別名稱適用於 Oracle 來源。


| `category-name` 值 | 其分組的內容 | 
| --- | --- | 
| `Tables` | 資料表。 | 
| `External Tables` | 外部資料表。 | 
| `Views` | 檢視。 | 
| `Packages` | PL/SQL 套件規格和內文。 | 
| `Procedures` | 儲存程序. | 
| `Functions` | 所有使用者函數，包括純量和管道。 | 
| `User Defined Types` | 物件類型。 | 
| `Collection Types` | VARRAY 和巢狀資料表類型。 | 
| `Sequences` | 序列。 | 
| `Materialized Views` | 具體化視觀表。 | 
| `Materialized View Logs` | 具體化檢視變更日誌。 | 
| `Synonyms` | 公有和私有同義詞。 | 
| `Clusters` | 索引和雜湊叢集。 | 
| `Database Links` | 資料庫連結。 | 

------
#### [ SAP ASE (Sybase ASE) ]

下列類別名稱適用於 SAP ASE (Sybase ASE) 來源。


| `category-name` 值 | 其分組的內容 | 
| --- | --- | 
| `Tables` | 基礎資料表。 | 
| `Views` | 檢視。 | 
| `Procedures` | 儲存程序. | 
| `Scalar Functions` | 純量 T-SQL 函數。 | 
| `Table Valued Functions` | 資料表值函數。 | 
| `Materialized Views` | 具體化視觀表。 | 
| `User Defined Types` | 別名使用者定義的類型。 | 
| `Defaults` | 繫結預設物件。僅限描述；無法獨立轉換。 | 

------
#### [ PostgreSQL ]

下列類別名稱適用於 PostgreSQL 和 Aurora PostgreSQL 目標。


| `category-name` 值 | 其分組的內容 | 
| --- | --- | 
| `Tables` | 基礎資料表。 | 
| `Views` | 檢視。 | 
| `Functions` | 函數。 | 
| `Procedures` | 儲存程序. | 
| `Sequences` | 序列。 | 
| `Materialized Views` | 具體化視觀表。 | 
| `Types` | 使用者定義的類型。 | 
| `Domains` | 網域。 | 

------
#### [ MySQL ]

下列類別名稱適用於 MySQL 和 Aurora MySQL 目標。


| `category-name` 值 | 其分組的內容 | 
| --- | --- | 
| `Tables` | 基礎資料表。 | 
| `Views` | 檢視。 | 
| `Functions` | 函數。 | 
| `Procedures` | 儲存程序. | 
| `Events` | 事件。 | 

------
#### [ IBM Db2 for z/OS ]

下列類別名稱適用於 z/OS 來源的 IBM Db2。


| `category-name` 值 | Locator 金鑰 | 其分組的內容 | 
| --- | --- | --- | 
| `Tables` | `table-name` \+ `"table-type": "table"` | 基礎資料表。 | 
| `Global Temporary Tables` | `table-name` \+ `"table-type": "table"` | 全域暫存資料表。無 PostgreSQL 目標模型。 | 
| `Materialized Query Tables` | `mqtable-name` | 具體化查詢表 MQTs)。無 PostgreSQL 目標模型。 | 
| `Views` | `table-name` \+ `"table-type": "view"` | 檢視。 | 
| `Aliases` | `alias-name` | 別名。無 PostgreSQL 目標模型。 | 
| `Procedures` | `procedure-name` | 儲存程序. | 
| `Functions` | `function-name` | 所有函數子類型：純量、資料表、內嵌、來源。 | 
| `Sequences` | `sequence-name` | 序列。 | 
| `User Defined Types` | `type-name` | 不同的類型和結構化類型。無 PostgreSQL 目標模型。 | 
| `External Routines` | `function-name` / `procedure-name` | 外部函數和外部程序。 | 

------
#### [ IBM Db2 LUW ]

下列類別名稱適用於 IBM Db2 LUW 目標。


| `category-name` 值 | 其分組的內容 | 
| --- | --- | 
| `Tables` | 基礎資料表。 | 
| `Views` | 檢視。 | 
| `Functions` | 函數 （純量、來源、資料表）。 | 
| `Procedures` | 儲存程序. | 
| `Sequences` | 序列。 | 
| `Modules` | 模組。 | 

------

## 選擇規則範例
<a name="dms-sc-selection-rule-examples"></a>

下列範例示範如何撰寫常見遷移案例的選擇規則。每個範例都會使用您要傳遞給 DMS 結構描述轉換 API 操作的`--selection-rules`參數值，例如 `StartMetadataModelConversion`或 `StartMetadataModelAssessment`。

### 選取單一資料表 (Microsoft SQL Server)
<a name="dms-sc-selection-rule-example-single-table"></a>

從 Microsoft SQL Server 來源選取一個要轉換的特定資料表。除了 之外`database-name`，Microsoft SQL Server 還需要 `schema-name`。

```
{
  "rules": [
    {
      "rule-type": "selection",
      "rule-id": "1",
      "rule-name": "{{rule_name}}",
      "rule-action": "explicit",
      "object-locator": {
        "server-name": "{{source_server}}",
        "database-name": "{{database_name}}",
        "schema-name": "{{schema_name}}",
        "table-name": "{{table_name}}"
      }
    }
  ]
}
```

### 選取整個結構描述 (Oracle)
<a name="dms-sc-selection-rule-example-whole-schema"></a>

省略物件層級索引鍵，以選取 Oracle 結構描述中的所有物件。Oracle 沒有`database-name`關卡；結構描述是 下最上層的容器`server-name`。

```
{
  "rules": [
    {
      "rule-type": "selection",
      "rule-id": "1",
      "rule-name": "{{rule_name}}",
      "rule-action": "explicit",
      "object-locator": {
        "server-name": "{{source_server}}",
        "schema-name": "{{schema_name}}"
      }
    }
  ]
}
```

### 選取檢視 (Oracle)
<a name="dms-sc-selection-rule-example-view"></a>

使用 `table-name`搭配 處理 Oracle 檢視`"table-type": "view"`。沒有單獨的`view-name`金鑰。

```
{
  "rules": [
    {
      "rule-type": "selection",
      "rule-id": "1",
      "rule-name": "{{rule_name}}",
      "rule-action": "explicit",
      "object-locator": {
        "server-name": "{{source_server}}",
        "schema-name": "{{schema_name}}",
        "table-name": "{{view_name}}",
        "table-type": "view"
      }
    }
  ]
}
```

### 選取預存程序 （適用於 z/OS 的 IBM Db2)
<a name="dms-sc-selection-rule-example-procedure-db2"></a>

從 IBM Db2 為 z/OS 來源選取一個特定的預存程序。z/OS 的 IBM Db2 使用 `procedure-name`，並直接從 移至 `server-name` `schema-name` ，沒有`database-name`關卡。

```
{
  "rules": [
    {
      "rule-type": "selection",
      "rule-id": "1",
      "rule-name": "{{rule_name}}",
      "rule-action": "explicit",
      "object-locator": {
        "server-name": "{{source_server}}",
        "schema-name": "{{schema_name}}",
        "procedure-name": "{{procedure_name}}"
      }
    }
  ]
}
```

### 選取結構描述中的所有程序 (SAP ASE)
<a name="dms-sc-selection-rule-example-all-procedures"></a>

使用 `%`做為 的萬用字元，選取 SAP ASE (Sybase ASE) 結構描述中的每個程序`procedure-name`。SAP ASE (Sybase ASE) 需要介於 `server-name`和 `database-name`之間`schema-name`。

```
{
  "rules": [
    {
      "rule-type": "selection",
      "rule-id": "1",
      "rule-name": "{{rule_name}}",
      "rule-action": "include",
      "object-locator": {
        "server-name": "{{source_server}}",
        "database-name": "{{database_name}}",
        "schema-name": "dbo",
        "procedure-name": "%"
      }
    }
  ]
}
```

### 依萬用字元模式選取資料表 (Microsoft SQL Server)
<a name="dms-sc-selection-rule-example-wildcard"></a>

使用 `%` 依字首比對多個資料表。此範例會選取名稱開頭為 的所有資料表`Fact_`。

```
{
  "rules": [
    {
      "rule-type": "selection",
      "rule-id": "1",
      "rule-name": "{{rule_name}}",
      "rule-action": "include",
      "object-locator": {
        "server-name": "{{source_server}}",
        "database-name": "{{database_name}}",
        "schema-name": "dbo",
        "table-name": "Fact_%"
      }
    }
  ]
}
```

### 包含結構描述，並依字首 (Oracle) 排除物件
<a name="dms-sc-selection-rule-example-include-exclude"></a>

在 Oracle 結構描述中包含所有物件，然後排除名稱開頭為 的任何資料表`TMP_`。規則會`rule-id`依序評估；比對`exclude`時優先。

```
{
  "rules": [
    {
      "rule-type": "selection",
      "rule-id": "1",
      "rule-name": "{{rule_name}}",
      "rule-action": "include",
      "object-locator": {
        "server-name": "{{source_server}}",
        "schema-name": "{{schema_name}}"
      }
    },
    {
      "rule-type": "selection",
      "rule-id": "2",
      "rule-name": "{{rule_name}}",
      "rule-action": "exclude",
      "object-locator": {
        "server-name": "{{source_server}}",
        "schema-name": "{{schema_name}}",
        "table-name": "TMP_%"
      }
    }
  ]
}
```

### 選取多個明確程序 (Microsoft SQL Server)
<a name="dms-sc-selection-rule-example-multi-explicit"></a>

在單一文件中使用多個`explicit`規則，依名稱選取一組特定的程序。

```
{
  "rules": [
    {
      "rule-type": "selection",
      "rule-id": "1",
      "rule-name": "{{rule_name}}",
      "rule-action": "explicit",
      "object-locator": {
        "server-name": "{{source_server}}",
        "database-name": "{{database_name}}",
        "schema-name": "dbo",
        "procedure-name": "PROC_A"
      }
    },
    {
      "rule-type": "selection",
      "rule-id": "2",
      "rule-name": "{{rule_name}}",
      "rule-action": "explicit",
      "object-locator": {
        "server-name": "{{source_server}}",
        "database-name": "{{database_name}}",
        "schema-name": "dbo",
        "procedure-name": "PROC_B"
      }
    },
    {
      "rule-type": "selection",
      "rule-id": "3",
      "rule-name": "{{rule_name}}",
      "rule-action": "explicit",
      "object-locator": {
        "server-name": "{{source_server}}",
        "database-name": "{{database_name}}",
        "schema-name": "dbo",
        "procedure-name": "PROC_C"
      }
    }
  ]
}
```

### 依字首包含，依名稱排除 (Microsoft SQL Server)
<a name="dms-sc-selection-rule-example-include-exclude-proc"></a>

使用 `include`規則來比對名稱開頭為 的每個程序`PROC_`，然後從`PROC_TEST`該集合中移除的 `exclude` 規則。`exclude` 規則必須遵循 `include`規則；獨立 `exclude` 沒有作用。

```
{
  "rules": [
    {
      "rule-type": "selection",
      "rule-id": "1",
      "rule-name": "{{rule_name}}",
      "rule-action": "include",
      "object-locator": {
        "server-name": "{{source_server}}",
        "database-name": "{{database_name}}",
        "schema-name": "dbo",
        "procedure-name": "PROC_%"
      }
    },
    {
      "rule-type": "selection",
      "rule-id": "2",
      "rule-name": "{{rule_name}}",
      "rule-action": "exclude",
      "object-locator": {
        "server-name": "{{source_server}}",
        "database-name": "{{database_name}}",
        "schema-name": "dbo",
        "procedure-name": "PROC_TEST"
      }
    }
  ]
}
```