使用 Microsoft SQL Server 資料庫做為 AWS Database Migration Service 的目標 - AWS 資料庫遷移服務

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

使用 Microsoft SQL Server 資料庫做為 AWS Database Migration Service 的目標

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

如需有關 AWS DMS 支援作為目標的 SQL Server 版本資訊,請參閱 的目標 AWS DMS

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

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

使用 SQL Server 做為 AWS Database Migration Service 目標的限制

使用 SQL Server 資料庫做為 AWS DMS 目標時有下列限制:

  • 當您手動建立附計算資料行的 SQL Server 目標資料表時,使用 BCP 大量複製公用程式時不支援完全載入複寫。若要使用完全載入複寫,請在端點上設定額外連線屬性 (ECA) 'useBCPFullLoad=false' 以停用 BCP 載入。如需在端點上設定 ECA 的詳細資訊,請參閱 來源與目標端點。如需使用 BCP 的詳細資訊,請參閱 Microsoft 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 不支援變更處理設定資料欄的可為 Null 性 (使用包含 ALTER TABLE 陳述式的 ALTER COLUMN [SET|DROP] NOT NULL 子句)。

  • 不支援 Windows 驗證。

使用 SQL Server 做為 AWS Database Migration Service 目標的安全需求

以下說明對 Microsoft SQL Server 目標使用 AWS DMS 時的安全性需求:

  • 在您要連線的 SQL Server 資料庫上,AWS DMS 使用者帳戶至少必須具有 db_owner 使用者角色。

  • SQL Server 系統管理員必須向所有 AWS DMS 使用者帳戶提供此許可。

使用 SQL Server 作為 AWS DMS 目標時的端點設定

您可以使用端點設定來設定您的 SQL Server 目標,類似於使用額外的連線屬性。您可以在使用 AWS DMS 主控台建立目標端點時指定設定,或使用 AWS CLI 中的 create-endpoint 命令,以 --microsoft-sql-server-settings '{"EndpointSetting": "value", ...}' JSON 語法指定設定。

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

名稱 描述

ControlTablesFileGroup

指定 AWS DMS 內部資料表的檔案群組。當複寫任務開始時,所有內部 AWS DMS 控制資料表 (awsdms_ apply_exception、awsdms_apply、awsdms_changes) 都會建立在指定的檔案群組中。

預設值:n/a

有效值:字串

範例:--microsoft-sql-server-settings '{"ControlTablesFileGroup": "filegroup1"}'

以下是建立檔案群組的命令範例。

ALTER DATABASE replicate ADD FILEGROUP Test1FG1; GO ALTER DATABASE replicate ADD FILE (        NAME = test1dat5,        FILENAME = 'C:\temp\DATA\t1dat5.ndf',        SIZE = 5MB,        MAXSIZE = 100MB,        FILEGROWTH = 5MB    )    TO FILEGROUP Test1FG1;    GO

ExecuteTimeout

使用這項額外連線屬性 (ECA) 來設定 SQL Server 執行個體的用戶端陳述式逾時 (以秒為單位)。預設值為 60 秒。

範例:'{"ExecuteTimeout": 100}'

UseBCPFullLoad

使用這項屬性傳輸資料以使用 BCP 進行完全載入操作,當目標資料表包含來源資料表所沒有的身分資料行時,您必須停用使用 BCP 載入資料表選項。

預設值:true

有效值:true/false

範例:--microsoft-sql-server-settings '{"UseBCPFullLoad": false}'

Microsoft SQL Server 的目標資料類型

下表顯示在使用 AWS DMS 和來自 AWS DMS 資料類型的預設映射時受支援的 Microsoft SQL Server 目標資料類型。如需 AWS DMS 資料類型的詳細資訊,請參閱AWS Database Migration Service 的資料類型

AWS DMS 資料類型

SQL Server 資料類型

BOOLEAN

TINYINT

BYTES

VARBINARY (長度)

DATE

SQL Server 2008 和更新版本請使用 DATE。

舊版且若擴展等於或小於 3 請使用 DATETIME。所有其他案例請使用 VARCHAR (37)。

TIME

SQL Server 2008 和更新版本請使用 DATETIME2 (%d)。

舊版且若擴展等於或小於 3 請使用 DATETIME。所有其他案例請使用 VARCHAR (37)。

DATETIME

SQL Server 2008 和更新版本請使用 DATETIME2 (scale)。

舊版且若擴展等於或小於 3 請使用 DATETIME。所有其他案例請使用 VARCHAR (37)。

INT1

SMALLINT

INT2

SMALLINT

INT4

INT

INT8

BIGINT

NUMERIC

NUMERIC (p,s)

REAL4

REAL

REAL8

FLOAT

STRING

如果資料行是日期或時間資料行,請執行下列動作:

  • SQL Server 2008 和更新版本請使用 DATETIME2。

  • 舊版且若擴展等於或小於 3 請使用 DATETIME。所有其他案例請使用 VARCHAR (37)。

如果資料行不是日期或時間資料行,請使用 VARCHAR (長度)。

UINT1

TINYINT

UINT2

SMALLINT

UINT4

INT

UINT8

BIGINT

WSTRING

NVARCHAR (長度)

BLOB

VARBINARY(max)

IMAGE

若要在 AWS DMS 使用此資料類型,您必須針對特定任務使用 BLOB。AWS DMS 只有在包含主索引鍵的資料表中才支援 BLOB 資料類型。

CLOB

VARCHAR(max)

若要在 AWS DMS 使用此資料類型,您必須針對特定任務使用 CLOB。在變更資料擷取 (CDC) 期間,AWS DMS 只在包含主索引鍵的資料表中支援 CLOB 資料類型。

NCLOB

NVARCHAR(max)

若要在 AWS DMS 使用此資料類型,您必須針對特定任務使用 NCLOB。在 CDC 期間,AWS DMS 只在包含主索引鍵的資料表中支援 NCLOB 資料類型。