

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

# 使用 Microsoft SQL Server 資料庫做為 的目標 AWS Database Migration Service
<a name="CHAP_Target.SQLServer"></a>

您可以使用 將資料遷移至 Microsoft SQL Server 資料庫 AWS DMS。使用 SQL Server 資料庫做為目標，您可以遷移其他 SQL Server 資料庫或其他受支援資料庫的資料。

如需 AWS DMS 支援做為目標之 SQL Server 版本的資訊，請參閱 [的目標 AWS DMS](CHAP_Introduction.Targets.md)。

AWS DMS 支援企業、標準、工作群組和開發人員的現場部署和 Amazon RDS 版本。

如需使用 AWS DMS 和 SQL Server 目標資料庫的其他詳細資訊，請參閱以下內容。

**Topics**
+ [使用 SQL Server 做為 目標的限制 AWS Database Migration Service](#CHAP_Target.SQLServer.Limitations)
+ [使用 SQL Server 做為 目標時的安全需求 AWS Database Migration Service](#CHAP_Target.SQLServer.Security)
+ [使用 SQL Server 做為 目標時的端點設定 AWS DMS](#CHAP_Target.SQLServer.ConnectionAttrib)
+ [Microsoft SQL Server 的目標資料類型](#CHAP_Target.SQLServer.DataTypes)

## 使用 SQL Server 做為 目標的限制 AWS Database Migration Service
<a name="CHAP_Target.SQLServer.Limitations"></a>

使用 SQL Server 資料庫做為 AWS DMS目標時有下列限制：
+ 當您手動建立附計算資料行的 SQL Server 目標資料表時，使用 BCP 大量複製公用程式時不支援完全載入複寫。若要使用完全載入複寫，請在端點上設定額外連線屬性 (ECA) `'useBCPFullLoad=false'` 以停用 BCP 載入。如需在端點上設定 ECA 的相關資訊，請參閱 [來源與目標端點](CHAP_Endpoints.Creating.md)。如需使用 BCP 的詳細資訊，請參閱 [Microsoft SQL Server 文件](https://docs.microsoft.com/en-us/sql/relational-databases/import-export/import-and-export-bulk-data-by-using-the-bcp-utility-sql-server)。
+ 使用 SQL Server 空間資料類型 (GEOMETRY 和 GEOGRAPHY) 複寫資料表時， 會 AWS DMS 取代您使用預設 SRID 插入的任何空間參考識別碼 (SRID)。GEOMETRY 的預設 SRID 為 0，而 GEOGRAPHY 的預設 SRID 為 4326。
+ 不支援暫時資料表。如果目標上的暫時資料表是以手動方式建立，則遷移這些資料表可能要在交易套用模式中使用僅複寫任務。
+ 目前 PostgreSQL 來源中的 `boolean` 資料類型會以具有不一致值的 `bit` 資料類型形式，移轉至 SQLServer 目標。

  若要解決這項問題，請執行下列動作：
  + 使用資料欄的`VARCHAR(1)`資料類型預先建立資料表 （或讓 AWS DMS 建立資料表）。然後讓下游處理將「F」視為 False，將「T」視為 True。
  + 若要避免變更下游處理，請將轉換規則新增至任務以將「F」值變更為「0」、將「T」值變更為 1，並將這些值儲存為 SQL Server 位元資料類型。
+ AWS DMS 不支援變更處理以設定資料欄 nullability （使用 `ALTER COLUMN [SET|DROP] NOT NULL`子句搭配 `ALTER TABLE` 陳述式）。
+ 不支援 Windows 驗證。

## 使用 SQL Server 做為 目標時的安全需求 AWS Database Migration Service
<a name="CHAP_Target.SQLServer.Security"></a>

以下說明 AWS DMS 搭配 Microsoft SQL Server 目標使用 的安全需求：
+  AWS DMS 使用者帳戶必須至少在您連線的 SQL Server 資料庫上具有`db_owner`使用者角色。
+ SQL Server 系統管理員必須向所有 AWS DMS 使用者帳戶提供此許可。

## 使用 SQL Server 做為 目標時的端點設定 AWS DMS
<a name="CHAP_Target.SQLServer.ConnectionAttrib"></a>

您可以使用端點設定來設定您的 SQL Server 目標，類似於使用額外的連線屬性。當您使用 AWS DMS 主控台或使用 中的 `create-endpoint`命令搭配 `--microsoft-sql-server-settings '{"{{EndpointSetting"}}: {{"value"}}, {{...}}}'` JSON 語法來建立目標端點時[AWS CLI](https://docs.aws.amazon.com/cli/latest/reference/dms/index.html)，您可以指定設定。

下列資料表顯示您可搭配 SQL Server 作為目標使用的端點設定。


| 名稱 | 描述 | 
| --- | --- | 
| `ControlTablesFileGroup` | 指定 AWS DMS 內部資料表的檔案群組。複寫任務開始時，會在指定的檔案群組上建立所有內部 AWS DMS 控制資料表 (awsdms\_ apply\_exception、awsdms\_apply、awsdms\_changes)。<br />預設值：n/a <br />有效值：字串 <br />範例：`--microsoft-sql-server-settings '{"ControlTablesFileGroup": "filegroup1"}'`<br />以下是建立檔案群組的命令範例。<pre>ALTER DATABASE replicate ADD FILEGROUP Test1FG1; <br />GO ALTER DATABASE replicate <br />  ADD FILE (        <br />    NAME = test1dat5,        <br />    FILENAME = 'C:\temp\DATA\t1dat5.ndf',        <br />    SIZE = 5MB,        <br />    MAXSIZE = 100MB,        <br />    FILEGROWTH = 5MB    <br />  )    <br />TO FILEGROUP Test1FG1;    <br />GO<br />                                </pre> | 
| `ConnectionTimeout` | 使用此額外的連線屬性 (ECA)，以秒為單位設定 SQL Server 執行個體的端點連線逾時。預設值為 10 秒。ECA 範例：`ConnectionTimeout=30`。 | 
| `ExecuteTimeout` | 使用這項額外連線屬性 (ECA) 來設定 SQL Server 執行個體的用戶端陳述式逾時 (以秒為單位)。預設值為 60 秒。<br />範例：`'{"ExecuteTimeout": 100}'` | 
| `UseBCPFullLoad` | 使用這項屬性傳輸資料以使用 BCP 進行完全載入操作，當目標資料表包含來源資料表所沒有的身分資料行時，您必須停用**使用 BCP 載入資料表**選項。<br />預設值：true <br />有效值：true/false <br />範例：`--microsoft-sql-server-settings '{"UseBCPFullLoad": false}'` | 

## Microsoft SQL Server 的目標資料類型
<a name="CHAP_Target.SQLServer.DataTypes"></a>

下表顯示使用 時支援的 Microsoft SQL Server 目標資料類型， AWS DMS 以及來自 AWS DMS 資料類型的預設映射。如需 AWS DMS 資料類型的詳細資訊，請參閱 [AWS Database Migration Service 的資料類型](CHAP_Reference.DataTypes.md)。


|  AWS DMS 資料類型  |  SQL Server 資料類型  | 
| --- | --- | 
| BOOLEAN | TINYINT | 
| BYTES | VARBINARY (長度) | 
| DATE | SQL Server 2008 和更新版本請使用 DATE。<br />舊版且若擴展等於或小於 3 請使用 DATETIME。所有其他案例請使用 VARCHAR (37)。 | 
| TIME | SQL Server 2008 和更新版本請使用 DATETIME2 (%d)。<br />舊版且若擴展等於或小於 3 請使用 DATETIME。所有其他案例請使用 VARCHAR (37)。 | 
| DATETIME | SQL Server 2008 和更新版本請使用 DATETIME2 (scale)。<br />舊版且若擴展等於或小於 3 請使用 DATETIME。所有其他案例請使用 VARCHAR (37)。 | 
| INT1 | SMALLINT | 
| INT2 | SMALLINT | 
| INT4 | INT | 
| INT8 | BIGINT | 
| NUMERIC | NUMERIC (p,s) | 
| REAL4 | REAL | 
| REAL8 | FLOAT | 
| STRING | 如果資料行是日期或時間資料行，請執行下列動作：[See the AWS documentation website for more details](http://docs.aws.amazon.com/zh_tw/dms/latest/userguide/CHAP_Target.SQLServer.html)<br />如果資料行不是日期或時間資料行，請使用 VARCHAR (長度)。 | 
| UINT1 | TINYINT | 
| UINT2 | SMALLINT | 
| UINT4 | INT | 
| UINT8 | BIGINT | 
| WSTRING | NVARCHAR (長度) | 
| BLOB | VARBINARY(max)<br />IMAGE<br />若要搭配 使用此資料類型 AWS DMS，您必須針對特定任務啟用 BLOBs 的使用。 僅在包含主索引鍵的資料表中 AWS DMS 支援 BLOB 資料類型。 | 
| CLOB | VARCHAR(max)<br />若要搭配 使用此資料類型 AWS DMS，您必須針對特定任務啟用 CLOBs 的使用。在變更資料擷取 (CDC) 期間， AWS DMS 只在包含主索引鍵的資料表中支援 CLOB 資料類型。 | 
| NCLOB | NVARCHAR(max)<br />若要搭配 使用此資料類型 AWS DMS，您必須針對特定任務啟用 NCLOBs的使用。在 CDC 期間， 僅在包含主索引鍵的資料表中 AWS DMS 支援 NCLOB 資料類型。 | 