

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

# 使用 Microsoft SQL Server 資料庫做為 的來源 AWS DMS
<a name="CHAP_Source.SQLServer"></a>

使用 從一或多個 Microsoft SQL Server 資料庫遷移資料 AWS DMS。使用 SQL Server 資料庫做為來源，您可以將資料遷移至另一個 SQL Server 資料庫，或遷移至其他 AWS DMS 支援的其中一個資料庫。

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

SQL Server 資料庫可安裝在您網路的任何電腦上。使用 AWS DMS需要有具有所選任務類型來源資料庫適當存取權限的 SQL Server 帳戶。如需詳細資訊，請參閱[SQL Server 任務的許可](#CHAP_Source.SQLServer.Permissions)。

AWS DMS 支援從 SQL Server 的具名執行個體遷移資料。建立來源端點時，您可以在伺服器名稱中使用以下符號。

```
IPAddress\InstanceName
```

例如，以下是正確的來源端點伺服器名稱。在此，名稱的第一部分是伺服器的 IP 地址，第二部分是 SQL Server 執行個體名稱 (在本範例中為 SQLTest)。

```
10.0.0.25\SQLTest
```

此外，取得您的 SQL Server 具名執行個體接聽的連接埠號碼，並使用它來設定 AWS DMS 來源端點。

**注意**  
連接埠 1433 是 Microsoft SQL 伺服器的預設值。但是，每次 SQL Server 啟動時都會變更的動態連接埠，以及用來透過防火牆連線至 SQL Server 的特定靜態連接埠號碼也經常使用。因此，當您建立 AWS DMS 來源端點時，想要知道 SQL Server 具名執行個體的實際連接埠號碼。

您可以使用 SSL 加密您 SQL Server 端點與複寫執行個體之間的連線。如需使用 SSL 搭配 SQL Server 端點的詳細資訊，請參閱[搭配 使用 SSL AWS Database Migration Service](CHAP_Security.SSL.md)。

您可以使用 CDC 從 SQL Server 資料庫進行持續遷移。如需為 CDC 設定來源 SQL 伺服器資料庫的詳細資訊，請參閱 [從 SQL Server 擷取持續複寫的資料變更](CHAP_Source.SQLServer.CDC.md)。

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

**Topics**
+ [使用 SQL Server 做為 來源的限制 AWS DMS](#CHAP_Source.SQLServer.Limitations)
+ [SQL Server 任務的許可](#CHAP_Source.SQLServer.Permissions)
+ [使用來自 SQL Server 來源進行中複寫 (CDC) 的先決條件](#CHAP_Source.SQLServer.Prerequisites)
+ [支援的 SQL Server 壓縮方法](#CHAP_Source.SQLServer.Compression)
+ [使用自我管理 SQL Server AlwaysOn 可用群組](#CHAP_Source.SQLServer.AlwaysOn)
+ [使用 SQL Server 做為 來源時的端點設定 AWS DMS](#CHAP_Source.SQLServer.ConnectionAttrib)
+ [SQL Server 的來源資料類型](#CHAP_Source.SQLServer.DataTypes)
+ [從 SQL Server 擷取持續複寫的資料變更](CHAP_Source.SQLServer.CDC.md)

## 使用 SQL Server 做為 來源的限制 AWS DMS
<a name="CHAP_Source.SQLServer.Limitations"></a>

使用 SQL Server 資料庫做為 AWS DMS來源時有下列限制：
+ 資料行的身分屬性不會遷移到目標資料庫資料行。
+ SQL Server 端點不支援使用具有稀疏資料欄的資料表。
+ 不支援 Windows 驗證。
+ 不複寫 SQL Server 計算欄位的變更。
+ 不支援時態資料表。
+ 不支援 SQL Server 分割區切換。
+ 使用 WRITETEXT 和 UPDATETEXT 公用程式時， AWS DMS 不會擷取套用至來源資料庫的事件。
+ 不支援以下資料處理語言 (DML) 模式。

  ```
  SELECT * INTO {{new_table}} FROM {{existing_table}}
  ```
+ 使用 SQL Server 做為來源時，不支援資料行層級的加密。
+ AWS DMS 不支援 SQL Server 2008 或 SQL Server 2008 R2 做為來源的伺服器層級稽核。這是因為 SQL Server 2008 和 2008 R2 的已知問題。例如，執行下列命令會導致 AWS DMS 失敗。

  ```
  USE [master]
  GO 
  ALTER SERVER AUDIT [my_audit_test-20140710] WITH (STATE=on)
  GO
  ```
+ 使用 SQL Server 做為來源時，完整 lob 模式不支援幾何和地理資料欄。請改用有限 lob 模式或將 `InlineLobMaxSize` 任務設定設為使用內嵌 lob 模式。
+ 在複寫任務中使用 Microsoft SQL Server 來源資料庫時，如果您移除任務，系統不會移除 SQL Server 複寫發布者定義。Microsoft SQL Server 系統管理員必須從 Microsoft SQL Server 中刪除這些定義。
+ 支援僅完全載入任務，從結構描述繫結和非結構描述繫結檢視遷移資料。
+ 不支援使用 sp\_rename 重新命名資料表 (例如 `sp_rename 'Sales.SalesRegion', 'SalesReg;)`)
+ 不支援使用 sp\_rename 重新命名欄 (例如 `sp_rename 'Sales.Sales.Region', 'RegID', 'COLUMN';`)
+ AWS DMS 不支援變更處理來設定和取消設定資料欄預設值 （搭配 `ALTER TABLE`陳述式使用 `ALTER COLUMN SET DEFAULT`子句）。
+ AWS DMS 不支援變更處理以設定資料欄 nullability （使用 `ALTER COLUMN [SET|DROP] NOT NULL`子句搭配 `ALTER TABLE` 陳述式）。
+ 使用 SQL Server 2012 和 SQL Server 2014，當使用 DMS 複寫搭配可用群組時，無法將分佈資料庫放置在可用群組中。SQL 2016 支援將分佈資料庫放置在可用群組，但在合併、雙向或對等式複寫拓撲所用的分佈資料庫除外。
+ 對於分割資料表， AWS DMS 不支援每個分割區的不同資料壓縮設定。
+ 將值插入至 SQL Server 空間資料類型 (GEOGRAPHY 和 GEOMETRY) 時，您可以忽略空間參考系統識別碼 (SRID) 屬性或指定不同的數字。使用空間資料類型複寫資料表時， 會將 SRID AWS DMS 取代為預設 SRID (GEOMETRY 為 0，GEOGRAPHY 為 4326)。
+ 如果未針對 MS-REPLICATION 或 MS-CDC 設定資料庫，您仍可擷取沒有主索引鍵的資料表，但系統只會擷取 INSERT/DELETE DML 事件。系統會忽略 UPDATE 和 TRUNCATE TABLE 事件。
+ 不支援 Columnstore 索引。
+ 不支援記憶體最佳化資料表 (使用記憶體內 OLTP)。
+ 使用包含多個資料行的主索引鍵複寫資料表時，不支援在完全載入期間更新主索引鍵資料行。
+ 不支援延遲耐久性。
+ 因為 RDS 執行備份的方式，`readBackupOnly=true` 端點設定 (額外的連線屬性) 不適用於 RDS for SQL Server 來源執行個體。
+ RDS 使用者沒有執行 SQL Server 預存程序 (`sp_repldone`) 的存取權，因此 `EXCLUSIVE_AUTOMATIC_TRUNCATION` 不適用於 Amazon RDS SQL Server 來源執行個體。
+ AWS DMS 不會擷取截斷的命令。
+ AWS DMS 不支援從開啟加速資料庫復原 (ADR) 的資料庫複寫。
+ AWS DMS 不支援在單一交易中擷取資料定義語言 (DDL) 和資料處理語言 (DML) 陳述式。
+ AWS DMS 不支援複寫資料層應用程式套件 (DACPAC)。
+ 包含主索引鍵或唯一索引以及更新多個資料列的 UPDATE 陳述式，可能會在您將變更套用至目標資料庫時造成衝突。例如，當目標資料庫將更新套用為 INSERT 和 DELETE 陳述式 (而不是單一 UPDATE 陳述式) 時，就可能會發生這種情況。使用批次最佳化套用模式時，資料表可能會遭忽略。使用交易式套用模式時，UPDATE 作業可能會導致違反限制。若要避免此問題，請重新載入相關資料表。或者，在「套用例外」控制資料表 (`dmslogs.awsdms_apply_exceptions`) 中找出有問題的記錄，然後在目標資料庫中手動編輯這些記錄。如需詳細資訊，請參閱[變更處理調校設定](CHAP_Tasks.CustomizingTasks.TaskSettings.ChangeProcessingTuning.md)。
+ AWS DMS 不支援資料表和結構描述的複寫，其中名稱包含下列集合中的特殊字元。

  `\\ -- \n \" \b \r ' \t ;` 
+ 不支援資料遮罩。在沒有遮罩的情況下 AWS DMS 遷移遮罩的資料。
+ AWS DMS 最多可複寫 32，767 個具有主索引鍵的資料表，每個資料表最多可複寫 1，000 個資料欄。這是因為 會為每個複寫資料表 AWS DMS 建立 SQL Server 複寫文章，而 SQL Server 複寫文章具有這些限制。
+ 使用變更資料擷取 (CDC) 時，您必須將組成唯一索引的所有資料欄定義為 `NOT NULL`。如果不符合此需求，則會導致 SQL Server 系統錯誤 22838。
+ 如果 SQL Server 從作用中交易日誌封存到備份日誌，或從作用中交易日誌截斷它們，您可能會遺失事件。

以下限制在存取備份交易日誌時適用：
+ 不支援加密備份。
+ 不支援儲存在 URL 或 Windows Azure 上的備份。
+ AWS DMS doe 不支援直接從其他共用資料夾的檔案層級直接處理交易日誌備份。
+ 對於 Amazon RDS for Microsoft SQL Server 以外的雲端 SQL Server 來源， 僅 AWS DMS 支援使用作用中交易日誌的持續複寫 (CDC)。您無法搭配 CDC 使用備份日誌。如果 SQL 伺服器將它們從作用中交易日誌封存到備份日誌，或在 DMS 讀取之前從作用中交易日誌截斷它們，您可能會遺失事件。
+ 對於 Amazon RDS for Microsoft SQL Server 來源， AWS DMS 3.5.2 及更新版本僅支援使用作用中交易日誌進行持續複寫 (CDC)，因為 DMS 無法使用 CDC 存取備份日誌。如果 RDS for SQL Server 從作用中交易日誌封存到備份日誌，或在 DMS 讀取之前從作用中交易日誌截斷它們，您可能會遺失事件。此限制不適用於 3.5.3 版及更高 AWS DMS 版本。
+ AWS DMS 不支援 Amazon RDS Proxy for SQL Server 的 CDC 做為來源。
+ 如果 SQL Server 來源在完全載入任務期間無法使用， AWS DMS 可能會在多次重新連線嘗試後將任務標記為已完成，即使資料遷移仍不完整。在此案例中，目標資料表僅包含連線遺失之前遷移的記錄，可能會建立來源與目標系統之間的資料不一致。若要確保資料完整性，您必須完全重新啟動完全載入任務，或重新載入受連線中斷影響的特定資料表。

## SQL Server 任務的許可
<a name="CHAP_Source.SQLServer.Permissions"></a>

**Topics**
+ [僅限完全載入任務的許可](#CHAP_Source.SQLServer.Permissions.FullLoad)
+ [具有進行中複寫任務的許可](#CHAP_Source.SQLServer.Permissions.Ongoing)

### 僅限完全載入任務的許可
<a name="CHAP_Source.SQLServer.Permissions.FullLoad"></a>

若要執行僅限完全載入任務，需要下列許可。請注意， AWS DMS 不會建立 `dms_user` 登入。如需建立 SQL Server 登入的相關資訊，請參閱 *Microsoft 文件*中的[建立資料庫使用者](https://learn.microsoft.com/en-us/sql/relational-databases/security/authentication-access/create-a-database-user?view=sql-server-ver16)主題。

```
USE db_name;
                
                CREATE USER dms_user FOR LOGIN dms_user; 
                ALTER ROLE [db_datareader] ADD MEMBER dms_user; 
                GRANT VIEW DATABASE STATE to dms_user;
                GRANT VIEW DEFINITION to dms_user;
                
                USE master;
                
                GRANT VIEW SERVER STATE TO dms_user;
```

### 具有進行中複寫任務的許可
<a name="CHAP_Source.SQLServer.Permissions.Ongoing"></a>

您可以使用 DMS 設定自我管理的 SQL Server 執行個體進行持續複寫，無論是否使用 `sysadmin`角色。對於無法授予`sysadmin`角色的 SQL Server 執行個體，請確定 DMS 使用者具有如下所述的權限。

**從自我管理 SQL Server 資料庫設定持續複寫的許可**

1. 使用 SQL Server Management Studio (SSMS) 或如先前中所述，使用密碼身分驗證建立新的 SQL Server 帳戶[僅限完全載入任務的許可](#CHAP_Source.SQLServer.Permissions.FullLoad)，例如 `self_managed_user`。

1. 執行下列`GRANT`命令：

   ```
   GRANT VIEW SERVER STATE TO {{self_managed_user}};
   
   USE msdb;
       GRANT SELECT ON msdb.dbo.backupset TO {{self_managed_user}};
       GRANT SELECT ON msdb.dbo.backupmediafamily TO {{self_managed_user}};
       GRANT SELECT ON msdb.dbo.backupfile TO {{self_managed_user}};
       
   USE db_name;
       CREATE USER {{self_managed_user}} FOR LOGIN {{self_managed_user}};
       ALTER ROLE [db_owner] ADD MEMBER {{self_managed_user}};
       GRANT VIEW DEFINITION to {{self_managed_user}};
   ```

1. 除了上述許可之外，使用者還需要下列其中一項：
   + 使用者必須是`sysadmin`固定伺服器角色的成員
   + 組態和許可，如 [在可用群組環境中的 SQL Server 上設定進行中複寫：而不使用 sysadmin 角色](CHAP_Source.SQLServer.CDC.md#CHAP_SupportScripts.SQLServer.ag)或 中所述[在獨立 SQL Server 上設定進行中複寫：沒有 sysadmin 角色](CHAP_Source.SQLServer.CDC.md#CHAP_SupportScripts.SQLServer.standalone)，取決於您的來源組態。

#### 從雲端 SQL Server 資料庫設定持續複寫的許可
<a name="CHAP_Source.SQLServer.Permissions.Cloud"></a>

雲端託管 SQL Server 執行個體是在 Amazon RDS for Microsoft SQL Server、Azure SQL 受管執行個體或 DMS 支援的任何其他受管雲端 SQL Server 執行個體上執行的執行個體。

使用 SQL Server Management Studio (SSMS) 或如先前中所述，使用密碼身分驗證建立新的 SQL Server 帳戶[僅限完全載入任務的許可](#CHAP_Source.SQLServer.Permissions.FullLoad)，例如 `rds_user`。

執行下列授予命令。

```
GRANT VIEW SERVER STATE TO rds_user;
```

對於 Amazon RDS for Microsoft SQL Server 來源，DMS 3.5.3 版及更高版本支援讀取交易日誌備份。為了確保 DMS 能夠存取日誌備份，除了上述之外，還可以在 RDS SQL Server 來源上授予`master`使用者權限或下列權限：

```
USE msdb;
    GRANT EXEC ON msdb.dbo.rds_dms_tlog_download TO rds_user;
    GRANT EXEC ON msdb.dbo.rds_dms_tlog_read TO rds_user;
    GRANT EXEC ON msdb.dbo.rds_dms_tlog_list_current_lsn TO rds_user;
    GRANT EXEC ON msdb.dbo.rds_task_status TO rds_user;
    
USE db_name;
    CREATE USER rds_user FOR LOGIN rds_user;
    ALTER ROLE [db_owner] ADD MEMBER rds_user;
    GRANT VIEW DEFINITION to rds_user;
```

對於 Amazon Azure SQL 受管執行個體，請授予下列權限：

```
GRANT SELECT ON msdb.dbo.backupset TO rds_user;
GRANT SELECT ON msdb.dbo.backupmediafamily TO rds_user;
GRANT SELECT ON msdb.dbo.backupfile TO rds_user;
```

## 使用來自 SQL Server 來源進行中複寫 (CDC) 的先決條件
<a name="CHAP_Source.SQLServer.Prerequisites"></a>

您可以對內部部署或 Amazon EC2 的自我管理 SQL Server 資料庫，或 Amazon RDS 或 Microsoft Azure SQL 受管執行個體的雲端資料庫上，使用進行中複寫 (變更資料擷取，也就是 CDC)。

在 SQL Server 資料庫做為 AWS DMS時使用進行中複寫，會特別提出下列要求：
+ 您必須針對完整備份設定 SQL Server，而且必須先執行備份，再開始複寫資料。
+ 復原模型必須設定為 **Bulk logged (大量記錄)** 或 **Full (完整)**。
+ 不支援將 SQL Server 備份到多個磁碟。如果將備份定義為透過不同磁碟將資料庫備份寫入多個檔案，則 AWS DMS 無法讀取資料且 AWS DMS 任務失敗。
+ 針對自我管理 SQL Server 來源，當您移除任務時，不會移除 DMS CDC 任務使用的來源 SQL Server 複寫發布者定義。SQL Server 系統管理員必須從 SQL Server 刪除這些自我管理來源的定義。
+ 在 CDC 期間， AWS DMS 需要查詢 SQL Server 交易日誌備份以讀取變更。 AWS DMS 不支援使用*非*原生格式的第三方備份軟體建立的 SQL Server 交易日誌備份。若要支援*使用*原生格式並使用第三方備份軟體建立的交易日誌備份，請將 `use3rdPartyBackupDevice=Y` 連線屬性新增至來源端點。
+ 針對自我管理 SQL Server 來源，請注意，在近期建立的資料表發行前，SQL Server 不會擷取其變更。當資料表新增至 SQL Server 來源時， AWS DMS 管理建立發佈。不過，此程序可能需要幾分鐘。此延遲期間對新建立資料表的操作，不會擷取或複寫到目標。
+ AWS DMS 變更資料擷取需要在 SQL Server 中開啟完整交易記錄。若要在 SQL Server 中開啟完整交易記錄，請啟用 MS-REPLICATION 或 CHANGE DATA CAPTURE (CDC)。
+ 在 MS CDC 擷取作業處理這些變更前，都不會將 SQL Server *tlog* 項目標示為重複使用。
+ 不支援記憶體最佳化資料表的 CDC 操作。此限制適用於 SQL Server 2014 (初次引入功能的版本) 和更高版本。
+ AWS DMS 根據預設，變更資料擷取需要 Amazon EC2 或現場部署 SQL 伺服器上的分發資料庫做為來源。因此，請確定您已啟動分發者，同時為具有主索引鍵的資料表設定 MS 複寫。

## 支援的 SQL Server 壓縮方法
<a name="CHAP_Source.SQLServer.Compression"></a>

請注意， AWS DMS中下列與支援 SQL Server 壓縮方法的相關資訊：
+ AWS DMS 支援 SQL Server 2008 版及更新版本中的資料列/頁面壓縮。
+ AWS DMS 不支援 Vardecimal 儲存格式。
+ AWS DMS 不支援稀疏資料欄和單欄式結構壓縮。

## 使用自我管理 SQL Server AlwaysOn 可用群組
<a name="CHAP_Source.SQLServer.AlwaysOn"></a>

SQL Server Always On 可用群組功能提供高可用性和災難復原，可作為資料庫鏡像的企業級替代方案。

在 中 AWS DMS，您可以從單一主要或次要可用性群組複本遷移變更。

### 使用主要可用群組複本
<a name="CHAP_Source.SQLServer.AlwaysOn.Primary"></a>

 

**若要使用主要可用性群組做為 中的來源 AWS DMS，請執行下列動作：**

1. 啟用可用性複本之所有 SQL Server 執行個體的分佈選項。如需詳細資訊，請參閱[在自我管理的 SQL 伺服器上設定進行中複寫](CHAP_Source.SQLServer.CDC.md#CHAP_Source.SQLServer.CDC.MSCDC)。

1. 在 AWS DMS 主控台中，開啟 SQL Server 來源資料庫設定。針對**伺服器名稱**，指定為可用群組接聽程式設定的網域名稱服務 (DNS) 名稱或 IP 地址。

當您第一次啟動 AWS DMS 任務時，可能需要比平常更長的時間才能開始。較慢的原因是因為可用群組伺服器正在複寫資料表文章的建立。

### 使用次要可用群組複本
<a name="CHAP_Source.SQLServer.AlwaysOn.Secondary"></a>

**若要使用次要可用性群組做為 中的來源 AWS DMS，請執行下列動作：**

1. 使用與 AWS DMS 來源端點使用者所使用的相同登入資料來連線至個別複本。

1. 確保您的 AWS DMS 複寫執行個體可以解析所有現有複本的 DNS 名稱，並連接到它們。您可以使用下列 SQL 查詢來取得所有複本的 DNS 名稱。

   ```
   select ar.replica_server_name, ar.endpoint_url from sys.availability_replicas ar
   JOIN sys.availability_databases_cluster adc
   ON adc.group_id = ar.group_id AND adc.database_name = '<source_database_name>';
   ```

1. 建立來源端點時，請為端點的**伺服器名稱**或端點祕密的**伺服器地址**指定可用群組接聽程式的 DNS 名稱。如需可用群組接聽程式的詳細資訊，請參閱 SQL Server 文件中的[什麼是可用群組接聽程式？](https://docs.microsoft.com/en-us/sql/database-engine/availability-groups/windows/availability-group-listener-overview?view=sql-server-ver15)。

   您可以使用公有 DNS 伺服器或內部部署 DNS 伺服器，來解析可用群組接聽程式、主要複本和次要複本。若要使用內部部署 DNS 伺服器，請設定 Amazon Route 53 Resolver。如需詳細資訊，請參閱[使用自己的內部部署名稱伺服器](CHAP_BestPractices.md#CHAP_BestPractices.Rte53DNSResolver)。

1. 請將下列連線額外屬性新增至來源端點。    
[See the AWS documentation website for more details](http://docs.aws.amazon.com/zh_tw/dms/latest/userguide/CHAP_Source.SQLServer.html)

1. 啟用可用群組中所有複本上之分佈選項。將所有節點新增至分發者清單。如需詳細資訊，請參閱[設定分佈](CHAP_Source.SQLServer.CDC.md#CHAP_Source.SQLServer.CDC.MSCDC.Setup)。

1. 在主要讀寫複本上執行下列查詢，以啟用資料庫的發布功能。您只針對資料庫執行一次此查詢。

   ```
   sp_replicationdboption @dbname = N'<source DB name>', @optname = N'publish', @value = N'true';
   ```



#### 限制
<a name="CHAP_Source.SQLServer.AlwaysOn.Secondary.limitations"></a>

下列是使用次要可用群組複本的限制：
+ AWS DMS 使用唯讀可用性群組複本做為來源時， 不支援保護。如需詳細資訊，請參閱[使用 SQL Server 做為 來源時的端點設定 AWS DMS](#CHAP_Source.SQLServer.ConnectionAttrib)。
+ AWS DMS 使用唯讀可用性群組複本做為來源時， 不支援`setUpMsCdcForTables`額外的連線屬性。如需詳細資訊，請參閱[使用 SQL Server 做為 來源時的端點設定 AWS DMS](#CHAP_Source.SQLServer.ConnectionAttrib)。
+ AWS DMS 從 3.4.7 版開始， 可以使用自我管理次要可用性群組複本做為持續複寫 （變更資料擷取或 CDC) 的來源資料庫。不支援 Cloud SQL Server 異地同步備份僅供讀取複本。如果您使用舊版 AWS DMS，請確定您使用主要可用性群組複本做為 CDC 的來源資料庫。

#### 容錯移轉至其他節點
<a name="CHAP_Source.SQLServer.AlwaysOn.Secondary.failover"></a>

如果您將端點`ApplicationIntent`的額外連線屬性設定為 `ReadOnly`，您的 AWS DMS 任務會連線至具有最高唯讀路由優先順序的唯讀節點。然後，當優先順序最高的唯讀節點無法使用時，其會容錯移轉至可用群組中的其他唯讀節點。如果您未設定 `ApplicationIntent`，您的 AWS DMS 任務只會連線到可用性群組中的主要 （讀取/寫入） 節點。

## 使用 SQL Server 做為 來源時的端點設定 AWS DMS
<a name="CHAP_Source.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 作為來源搭配使用的端點設定。


| 名稱 | 描述 | 
| --- | --- | 
| `ActivateSafeguard` | 此屬性會開啟或關閉「保護」。如需「保護」的相關資訊，請參閱下列`SafeguardPolicy`。<br />預設值：`true`<br />有效值：{`false`、`true`} <br />範例：`'{"ActivateSafeguard": true}'` | 
| AlwaysOnSharedSynchedBackupIsEnabled | 此屬性會調整從做為 Always On 可用性群組叢集一部分託管的 SQL Server 來源資料庫遷移 AWS DMS 時的行為。<br />AWS DMS 對設定為在 Always On 叢集中執行的 SQL Server 來源資料庫具有增強支援。在此情況下， AWS DMS 會嘗試追蹤交易備份是否正在 Always On 叢集中的節點進行，而不是從來源資料庫執行個體託管所在的節點進行。在遷移任務啟動時， AWS DMS 會嘗試連線到叢集中的每個節點，但如果無法連線到任何一個節點，就會失敗。<br />如果您需要 AWS DMS 輪詢 Always On 叢集中的所有節點以進行交易備份，請將此屬性設定為 `false`。<br />預設值：`true`<br />有效值：`true` 或 `false`<br />範例：`'{"AlwaysOnSharedSynchedBackupIsEnabled": false}'` | 
| `"ApplicationIntent": "readonly"` | 此 ODBC 驅動程式屬性設定會導致 SQL Server 將複寫任務路由到優先順序最高的唯讀節點。如果沒有此設定，SQL Server 會將複寫任務路由至主要讀寫節點。 | 
| `ConnectionTimeout` | 使用此額外的連線屬性 (ECA)，以秒為單位設定 SQL Server 執行個體的端點連線逾時。預設值為 10 秒。ECA 範例：`ConnectionTimeout=30`。 | 
| `EnableNonSysadminWrapper` | 當您在沒有 sysadmin 使用者的獨立 SQL 伺服器上設定進行中複寫時，請使用此端點設定。3.4.7 版和更新 AWS DMS 版本支援此參數。如需在獨立 SQL 伺服器上設定進行中複寫的相關資訊，請參閱[從 SQL Server 擷取持續複寫的資料變更](CHAP_Source.SQLServer.CDC.md)。<br />預設值：`false`<br />有效值：`true`、`false`<br />範例：`'{"EnableNonSysadminWrapper": true}'` | 
| `ExecuteTimeout` | 使用這個額外連線屬性 (ECA)，來設定 SQL Server 執行個體的用戶端陳述式逾時 (以秒為單位)。預設值為 60 秒。<br />範例：`'{"ExecuteTimeout": 100}'` | 
| `FatalOnSimpleModel` | 當設定為 `true` 時，這個設定會在將 SQL Server 資料庫復原模式設定 `simple` 為時產生嚴重錯誤。<br />預設值：`false`<br />有效值：`true` 或 `false`<br />範例：`'{"FatalOnSimpleModel": true}'` | 
| `ForceLobLookup` | 對內嵌 LOB 強制執行查詢。<br />預設值：`false`<br />有效值：`true`、`false`<br />範例：`'{"ForceLobLookup": false}'` | 
| `"MultiSubnetFailover": "Yes"` | 此 ODBC 驅動程式屬性可協助 DMS 在可用群組容錯移轉的情況下連線至新的主要。此屬性是針對連線中斷或接聽程式 IP 地址不正確的情況所設計。在這些情況下， 會 AWS DMS 嘗試連線到與可用群組接聽程式相關聯的所有 IP 地址。 | 
| `ReadBackupOnly` | 使用此屬性需要 **sysadmin** 權限。當此屬性設定為 `true` 時， AWS DMS 只會在進行中複寫期間讀取交易日誌備份的變更，而不會讀取作用中的交易日誌檔案。將此參數設為 `true` 可讓您控制在完全載入和進行中複寫任務期間控制作用中交易日誌檔的成長。不過，此參數可以將一些來源延遲新增至進行中複寫。<br />有效值：`true` 或 `true`。預設值為 `false`。<br />範例：`'{"ReadBackupOnly": true}'` 由於 RDS 執行備份的方式，此參數無法在 Amazon RDS SQL Server 來源執行個體上運作。  | 
| `SafeguardPolicy` | 為了獲得最佳效能， AWS DMS 會嘗試從作用中的交易日誌 (TLOG) 擷取所有未讀取的變更。不過，有時因為截斷，作用中的 TLOG 可能不包含所有未讀取的變更。發生這種情況時， 會 AWS DMS 存取日誌備份以擷取缺少的變更。若要將存取日誌備份的需求降到最低，請使用下列其中一種方法 AWS DMS 避免截斷：[See the AWS documentation website for more details](http://docs.aws.amazon.com/zh_tw/dms/latest/userguide/CHAP_Source.SQLServer.html)<br />預設值：`RELY_ON_SQL_SERVER_REPLICATION_AGENT`<br />有效值：{`EXCLUSIVE_AUTOMATIC_TRUNCATION`、`RELY_ON_SQL_SERVER_REPLICATION_AGENT`} <br />範例：`'{"SafeguardPolicy": "EXCLUSIVE_AUTOMATIC_TRUNCATION"}'` | 
| `SetUpMsCdcForTables` | 此屬性會針對來源資料庫和任務對應中未啟用 MS-Replication 的資料表開啟 MS-CDC。將此值設定為 `true`，會在來源資料庫上執行 `sp_cdc_enable_db` 預存程序，然後在來源資料庫中未啟用 MS-Replication 之任務中的每個資料表上執行 `sp_cdc_enable_table` 預存程序。如需開啟分佈的詳細資訊，請參閱[在自我管理的 SQL 伺服器上設定進行中複寫](CHAP_Source.SQLServer.CDC.md#CHAP_Source.SQLServer.CDC.MSCDC)。<br />有效值：{`true`、`false`} <br />範例：`'{"SetUpMsCdcForTables": true}'` | 
| `TlogAccessMode` | 指示用來擷取 CDC 資料的模式。<br />預設值：`PreferTlog`<br />有效值：`BackupOnly`、`PreferBackup`、`PreferTlog`、`TlogOnly`<br />範例：`'{"TlogAccessMode": "PreferTlog"}'` | 
| `Use3rdPartyBackupDevice` | 將此屬性設定為 `Y` 時，如果以原生格式建立第三方交易日誌備份， AWS DMS 會對其進行處理。 | 

## SQL Server 的來源資料類型
<a name="CHAP_Source.SQLServer.DataTypes"></a>

使用 SQL Server 做為 來源的資料遷移 AWS DMS 支援大多數 SQL Server 資料類型。下表顯示使用 時支援的 SQL Server 來源資料類型， AWS DMS 以及來自 AWS DMS 資料類型的預設映射。

如需如何檢視從目標映射的資料類型資訊，請參閱您要使用的目標端點一節。

如需 AWS DMS 資料類型的詳細資訊，請參閱 [AWS Database Migration Service 的資料類型](CHAP_Reference.DataTypes.md)。


|  SQL Server 資料類型  |  AWS DMS 資料類型  | 
| --- | --- | 
| BIGINT | INT8 | 
| BIT | BOOLEAN | 
| DECIMAL | NUMERIC | 
| INT | INT4 | 
| MONEY | NUMERIC | 
| NUMERIC (p,s) | NUMERIC  | 
| SMALLINT | INT2 | 
| SMALLMONEY | NUMERIC | 
| TINYINT | UINT1 | 
| REAL | REAL4 | 
| FLOAT | REAL8 | 
| DATETIME | DATETIME | 
| DATETIME2 (SQL Server 2008 和更高版本) | DATETIME | 
| SMALLDATETIME | DATETIME | 
| DATE | DATE | 
| TIME | TIME | 
| DATETIMEOFFSET | WSTRING | 
| CHAR | STRING | 
| VARCHAR | STRING | 
| VARCHAR (max) | CLOB<br />TEXT<br />若要搭配 使用此資料類型 AWS DMS，您必須針對特定任務啟用 CLOB 資料類型的使用。<br />針對 SQL Server 資料表，即使未變更 SQL Server 中 LOB 資料欄值的 UPDATE 陳述式， 也會 AWS DMS 更新目標中的 LOB 資料欄。<br />在 CDC 期間， 僅在包含主索引鍵的資料表中 AWS DMS 支援 CLOB 資料類型。 | 
| NCHAR | WSTRING | 
| NVARCHAR (長度) | WSTRING | 
| NVARCHAR (max) | NCLOB<br />NTEXT<br />若要搭配 使用此資料類型 AWS DMS，您必須針對特定任務啟用 SupportLobs。如需啟用 Lob 支援的詳細資訊，請參閱[設定 AWS DMS 任務中來源資料庫的 LOB 支援](CHAP_Tasks.LOBSupport.md)。<br />針對 SQL Server 資料表，即使未變更 SQL Server 中 LOB 資料欄值的 UPDATE 陳述式， 也會 AWS DMS 更新目標中的 LOB 資料欄。<br />在 CDC 期間， 僅在包含主索引鍵的資料表中 AWS DMS 支援 CLOB 資料類型。 | 
| BINARY | BYTES | 
| VARBINARY | BYTES | 
| VARBINARY (max) | BLOB<br />IMAGE<br />針對 SQL Server 資料表，即使未變更 SQL Server 中 LOB 資料欄值的 UPDATE 陳述式， 也會 AWS DMS 更新目標中的 LOB 資料欄。<br />若要搭配 使用此資料類型 AWS DMS，您必須針對特定任務啟用 BLOB 資料類型的使用。<br />AWS DMS 僅在包含主索引鍵的資料表中支援 BLOB 資料類型。 | 
| TIMESTAMP | BYTES | 
| UNIQUEIDENTIFIER | STRING | 
| HIERARCHYID  | 複寫到 SQL Server 目標端點時請使用 HIERARCHYID。<br />複寫到所有其他目標端點時使用 WSTRING (250)。 | 
| XML | NCLOB<br />針對 SQL Server 資料表，即使未變更 SQL Server 中 LOB 資料欄值的 UPDATE 陳述式， 也會 AWS DMS 更新目標中的 LOB 資料欄。<br />若要搭配 使用此資料類型 AWS DMS，您必須針對特定任務啟用使用 NCLOB 資料類型。<br />在 CDC 期間， 僅在包含主索引鍵的資料表中 AWS DMS 支援 NCLOB 資料類型。 | 
| GEOMETRY | 複寫到支援此資料類型的目標端點時，請使用 GEOMETRY。<br />複寫到不支援此資料類型的目標端點時，請使用 CLOB。 | 
| GEOGRAPHY | 複寫到支援此資料類型的目標端點時，請使用 GEOGRAPHY。<br />複寫到不支援此資料類型的目標端點時，請使用 CLOB。 | 

AWS DMS 不支援包含具有下列資料類型之欄位的資料表。
+ CURSOR
+ SQL\_VARIANT
+ TABLE

**注意**  
使用者定義的資料類型是否受支援，依其基本類型而定。例如，以 DATETIME 為基礎的使用者定義資料類型，視為 DATETIME 資料類型處理。