Microsoft SQL Server データベースの AWS Database Migration Service のターゲットとしての使用 - AWS Database Migration Service

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

Microsoft SQL Server データベースの AWS Database Migration Service のターゲットとしての使用

AWS DMS を使用して、Microsoft SQL Server データベースにデータを移行できます。SQL Server データベースをターゲットとして使用すると、別の SQL Server データベースまたはサポートされている他のデータベースのいずれかからデータを移行できます。

AWS DMS がターゲットとしてサポートする SQL Server のバージョンについては、「のターゲット AWS DMS」を参照してください。

AWS DMS は、Enterprise、Standard、Workgroup、Developer のオンプレミスおよび 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) を持つテーブルをレプリケートすると、挿入した空間参照識別子 (SRID) がすべて AWS DMS によりデフォルトの SRID に置き換えられます。デフォルトの SRID は、GEOMETRY は 0、GEOGRAPHY は 4326 です。

  • 一時テーブルはサポートされていません。ターゲット上に手動で作成されている場合に、一時テーブルを移行すると、トランザクション適用モードのレプリケーションのみのタスクで動作することがあります。

  • 現在のところ、PostgreSQL ソースの boolean データ型は、一貫性のない値を持つ bit データ型として SQLServer ターゲットに移行されます。

    回避策として、次を実行します。

    • 列の VARCHAR(1) データ型を使用してテーブルを事前に作成します (または、AWS DMS で自動的にテーブルを作成します)。次に、ダウンストリーム処理で「F」を False、「T」を True として扱います。

    • ダウンストリーム処理を変更する必要がないようにするには、「F」の値を「0」に、「T」の値を「1」に変更する変換ルールをタスクに追加して、SQL Server のビットデータ型として格納します。

  • AWS DMS では、列の null 機能を設定するための変更処理はサポートされていません (ALTER COLUMN [SET|DROP] NOT NULL 句を使用した ALTER TABLE ステートメント)。

  • Windows 認証はサポートされていません。

AWS Database Migration Service のターゲットとして SQL Server を使用する場合のセキュリティ要件

以下では、Microsoft SQL Server ターゲットとともに AWS DMS を使用する場合のセキュリティ要件について説明します。

  • AWS DMS ユーザーアカウントには、接続先の SQL Server データベースに対する db_owner ユーザーロールが最低限必要です。

  • SQL Server システム管理者は、すべての AWS DMS ユーザーアカウントにこのアクセス許可を付与する必要があります。

SQL Server を AWS DMS のターゲットとして使用する場合のエンドポイントの設定

追加の接続属性の使用と同様、エンドポイントの設定を使用して、ターゲットの SQL Server データベースを設定できます。ターゲットエンドポイントを作成する際に、AWS DMS コンソールを使用するか、AWS CLI--microsoft-sql-server-settings '{"EndpointSetting": "value", ...}' の JSON 構文を指定して create-endpoint コマンドを使用して設定を指定します。

次の表は、ターゲットとして SQL Server を使用できるエンドポイント設定を説明しています。

名前 説明

ControlTablesFileGroup

AWS DMS 内部テーブルのファイルグループを指定します。レプリケーションタスクが開始されると、すべての内部 AWS DMS 制御テーブル (awsdms_ apply_exception、awsdms_apply、awsdms_changes) が、指定したファイルグループで作成されます。

デフォルト値: 該当なし

有効な値: 文字列

例: --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 を使用して全ロードオペレーション用のデータを転送するには、この属性を使用します。ターゲットテーブルに、ソーステーブル内に存在しない IDENTITY 列が含まれている場合、[use BCP for loading table] (テーブルのロードに BCP を使用) オプションを無効にする必要があります。

デフォルト値: true

有効な値: true/false

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

Microsoft SQL Server のターゲットデータ型

次の表に、AWS DMS を使用する場合にサポートされる Microsoft SQL Server のターゲットデータ型と、AWS DMS のデータ型からのデフォルトマッピングを示します。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 (位取り) を使用する。

それより前のバージョンでは、スケールが 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(最大)

IMAGE

AWS DMS でこのデータ型を使用する場合は、特定のタスク用に BLOB の使用を有効にする必要があります。AWS DMS では、プライマリキーを含むテーブルでのみ BLOB データ型がサポートされます。

CLOB

VARCHAR(max)

AWS DMS でこのデータ型を使用するには、特定のタスク用に CLOB の使用を有効にする必要があります。変更データキャプチャ (CDC) 中、AWS DMS はプライマリキーを含むテーブルでのみ CLOB データ型をサポートしています。

NCLOB

NVARCHAR(最大)

AWS DMS でこのデータ型を使用するには、特定のタスク用に NCLOB の使用を有効にする必要があります。CDC 中、AWS DMS はプライマリキーを含むテーブルでのみ NCLOB データ型をサポートします。