

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

# のソースとしての Microsoft SQL Server データベースの使用 AWS DMS
<a name="CHAP_Source.SQLServer"></a>

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

がソースとして AWS DMS サポートする SQL Server のバージョンについては、「」を参照してください[のソース AWS DMS](CHAP_Introduction.Sources.md)。

ソース SQL Server データベースは、ネットワーク内のどのコンピュータにもインストールできます。選択したタスクのタイプに応じてソースデータベースに対する適切なアクセス権限のある SQL Server アカウントは、そのデータベースを AWS DMSで使用するために必要です。詳細については、「[SQL Server タスクのアクセス許可](#CHAP_Source.SQLServer.Permissions)」を参照してください。

AWS DMS は、SQL Server の名前付きインスタンスからのデータの移行をサポートしています。ソースエンドポイントを作成するとき、サーバー名では次の表記を使用できます。

```
IPAddress\InstanceName
```

たとえば、正しいソースエンドポイントサーバー名を以下に示します。ここでは、名前の最初の部分はサーバーの IP アドレス、2 番目の部分は SQL Server インスタンス名 (この例では SQLTest) です。

```
10.0.0.25\SQLTest
```

また、SQL Server の名前付きインスタンスがリッスンするポート番号を取得し、それを使用して AWS DMS ソースエンドポイントを設定します。

**注記**  
ポート 1433 は、Microsoft SQL Server のデフォルトです。ただし、SQL Server をスタートするたびに変化する動的ポート、およびファイアウォール経由で SQL Server に接続するために使用される特定の静的ポート番号もよく使用されます。したがって、 AWS DMS ソースエンドポイントを作成するときに、SQL Server の名前付きインスタンスの実際のポート番号を知る必要があります。

SSL を使用して、SQL Server エンドポイントとレプリケーションインスタンスとの接続を暗号化できます。SQL Server エンドポイントで SSL を使用する方法の詳細については、「[での SSL の使用 AWS Database Migration Service](CHAP_Security.SSL.md)」をご参照ください。

SQL Server データベースからの継続的な移行に CDC を使用できます。CDC のソースの SQL Server データベースへの設定方法の詳細については、「[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 をソースとして使用する場合、GEOMETRY および GEOGRAPHY 型の列は完全 LOB モードではサポートされません。代わりに、制限付き LOB モードを使用するか、インライン LOB モードを使用するように `InlineLobMaxSize` タスク設定を行います。
+ レプリケーションタスクで Microsoft SQL Server のソースデータベースを使用する場合、このタスクを削除しても、SQL Server Replication Publisher 定義は削除されません。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 は、列の null 可能性を設定する変更処理をサポートしていません ( `ALTER TABLE` ステートメントで `ALTER COLUMN [SET|DROP] NOT NULL`句を使用）。
+ SQL Server 2012 および SQL Server 2014 では、可用性グループで DMS レプリケーションを使用する場合、ディストリビューション データベースを可用性グループに配置できません。SQL 2016 では、マージ、双方向、またはピアツーピアのレプリケーション トポロジで使用されるディストリビューション データベースを除き、ディストリビューション データベースを可用性グループに配置できます。
+ パーティションテーブルの場合、 AWS DMS はパーティションごとに異なるデータ圧縮設定をサポートしていません。
+ SQL Server の空間データ型 (GEOGRAPHY および GEOMETRY) に値を挿入するときは、SRID (空間リファレンス系識別子) プロパティを無視するか、別の数値を指定できます。空間データ型のテーブルをレプリケートする場合、 は SRID をデフォルトの SRID (GEOMETRY の場合は 0、GEOGRAPHY の場合は 4326) AWS DMS に置き換えます。
+ データベースが MS-REPLICATION または MS-CDC 用に設定されていない場合でも、プライマリキーを持たないテーブルをキャプチャできますが、INSERT/DELETE DML イベントのみがキャプチャされます。UPDATE イベント TRUNCATE TABLE イベントは無視されます。
+ Columnstore インデックスはサポートされていません。
+ メモリ最適化テーブル (インメモリ OLTP を使用) はサポートされていません。
+ 複数の列で構成されるプライマリ キーを持つテーブルをレプリケーションする場合、全ロード中にプライマリ キー列の更新はサポートされません。
+ 遅延永続化はサポートされていません。
+ RDS がバックアップを実行する方法が原因で、`readBackupOnly=true` エンドポイント設定 (追加の接続属性) は RDS for SQL Server ソースインスタンスでは機能しません。
+ RDS ユーザーは SQL Server ストアド プロシージャ (`sp_repldone`) を実行するアクセス権がないため、Amazon RDS SQL Server ソースインスタンスで `EXCLUSIVE_AUTOMATIC_TRUNCATION` は動作しません。
+ AWS DMS は切り捨てコマンドをキャプチャしません。
+ AWS DMS は、高速データベースリカバリ (ADR) が有効になっているデータベースからのレプリケーションをサポートしていません。
+ AWS DMS は、単一のトランザクション内でのデータ定義言語 (DDL) およびデータ操作言語 (DML) ステートメントのキャプチャをサポートしていません。
+ AWS DMS は、データ層アプリケーションパッケージ (DACPAC) のレプリケーションをサポートしていません。
+ プライマリキーまたは一意のインデックスが関連し、複数のデータ行を更新する UPDATE ステートメントについては、ターゲットデータベースに変更を適用すると競合が発生する可能性があります。これは例えば、ターゲットデータベースが単一の UPDATE ステートメントではなく INSERT や DELETE のステートメントとして更新を適用する場合に発生する可能性があります。バッチ最適化の適用モードでは、テーブルが無視されることがあります。トランザクション適用モードでは、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 個の列をレプリケートします。これは、 がレプリケートされたテーブルごとに SQL Server レプリケーション記事 AWS DMS を作成し、SQL Server レプリケーション記事にはこれらの制限があるためです。
+ 変更データキャプチャ (CDC) を使用する場合、一意のインデックスを構成するすべての列を `NOT NULL` として定義する必要があります。この要件が満たされない場合、SQL Server システムエラー 22838 が発生します。
+ SQL Server がアクティブトランザクションログからバックアップログにアーカイブしたり、アクティブトランザクションログから切り捨てたりすると、イベントが損失する可能性があります。

バックアップトランザクションログにアクセスするときには、次の制限が適用されます。
+ 暗号化バックアップはサポートされていません。
+ URL または Windows Azure に保存されたバックアップはサポートされていません。
+ AWS DMS doe は、代替共有フォルダからのファイルレベルでのトランザクションログバックアップの直接処理をサポートしていません。
+ Amazon RDS for Microsoft SQL Server 以外の Cloud SQL Server ソースの場合、 はアクティブなトランザクションログでのみ継続的なレプリケーション (CDC) AWS DMS をサポートします。CDC ではバックアップログを使用できません。SQL Server がアクティブトランザクションログからバックアップログにアーカイブしたり、DMS が読み取れるようになる前にアクティブトランザクションログから切り捨てたりすると、イベントが損失する可能性があります。
+ Amazon RDS for Microsoft SQL Server ソースの場合、DMS は CDC でバックアップログにアクセスできないため、 AWS DMS 3.5.2 以前はアクティブなトランザクションログでのみ継続的なレプリケーション (CDC) をサポートしています。RDS for SQL Server がアクティブトランザクションログからバックアップログにアーカイブしたり、DMS が読み取れるようになる前にアクティブトランザクションログから切り捨てたりすると、イベントが損失する可能性があります。この制限は、 AWS DMS バージョン 3.5.3 以降には適用されません。
+ 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>

セルフマネージド型 SQL Server インスタンスは、`sysadmin` ロールの使用の有無にかかわらず、DMS を使用した継続的なレプリケーション用に設定できます。`sysadmin` ロールを付与できない SQL Server インスタンスの場合、DMS ユーザーに次に説明される権限があることを確認します。

**セルフマネージド型 SQL Server データベースからの継続的なレプリケーションのアクセス許可を設定する**

1. SQL Server Management Studio (SSMS) を使用したパスワード認証を使用して、また `self_managed_user` など、前に「[全ロードのみのタスクに対する許可](#CHAP_Source.SQLServer.Permissions.FullLoad)」で説明したように、新しい SQL Server アカウントを作成します。

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 Manged Instance、または DMS でサポートされるその他のマネージド型クラウド SQL Server インスタンス上で実行されるインスタンスです。

SQL Server Management Studio (SSMS) を使用したパスワード認証を使用して、また `rds_user` など、前に「[全ロードのみのタスクに対する許可](#CHAP_Source.SQLServer.Permissions.FullLoad)」で説明したように、新しい SQL Server アカウントを作成します。

以下の付与コマンドを実行します。

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

Amazon RDS for Microsoft SQL Server ソースの場合、DMS バージョン 3.5.3 以降では、トランザクションログのバックアップからの読み取りがサポートされています。DMS がログのバックアップにアクセスできるようにするには、上記に加えて `master` ユーザー権限、または RDS SQL Server ソースの以下の権限を付与します。

```
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 Managed Instance では、次の権限が付与されます。

```
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) を使用できます。

 AWS DMSのソースとして SQL Server データベースを使用して継続的なレプリケーションを使用する場合は、次の要件が特別に適用されます。
+ SQL Server を完全バックアップ用に設定し、データのレプリケートの開始前にバックアップを実行する必要があります。
+ 復旧モデルを [**Bulk logged**] または [**Full**] に設定する必要があります。
+ 複数のディスクへの SQL Server のバックアップはサポートされていません。データベースバックアップを異なるディスク上の複数のファイルに書き込むようにバックアップが定義されている場合、 AWS DMS はデータを読み取れず、 AWS DMS タスクは失敗します。
+ セルフ管理 SQL Server ソースの場合、DMS CDC タスクで使用されたソース データベースの SQL Server レプリケーション パブリッシャ定義は、そのタスクを削除しても削除されません。SQL Server システム管理者がそれらの定義をセルフマネージド型ソースの SQL Server から削除する必要があります。
+ CDC 中、 は SQL Server トランザクションログのバックアップを検索して変更を読み取る AWS DMS 必要があります。 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、1 つのプライマリまたはセカンダリの可用性グループレプリカから変更を移行できます。

### プライマリ可用性グループレプリカの使用
<a name="CHAP_Source.SQLServer.AlwaysOn.Primary"></a>

 

**でプライマリ可用性グループをソースとして使用するには AWS DMS、次の手順を実行します。**

1. 可用性レプリカ内のすべての SQL Server インスタンスでディストリビューションオプションを有効にします。詳細については、「[セルフマネージド型 SQL Server での継続的なレプリケーションのセットアップ](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/ja_jp/dms/latest/userguide/CHAP_Source.SQLServer.html)

1. 可用性グループ内のすべてのレプリカでディストリビューションオプションを有効にします。すべてのノードをディストリビューターリストに追加します。詳細については、「[ディストリビューションを設定するには](CHAP_Source.SQLServer.CDC.md#CHAP_Source.SQLServer.CDC.MSCDC.Setup)」を参照してください。

1. プライマリ読み取り/書き込みレプリカで次のクエリを実行して、データベースの公開を有効にします。このクエリはデータベースに対して 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 は、読み取り専用の可用性グループレプリカをソースとして使用する場合の Safeguard をサポートしていません。詳細については、「[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 のマルチ AZ リードレプリカはサポートされていません。の以前のバージョンを使用する場合は 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 コンソールを使用するか、`--microsoft-sql-server-settings '{"{{EndpointSetting"}}: {{"value"}}, {{...}}}'`JSON 構文で の `create-endpoint` コマンドを使用して[AWS CLI](https://docs.aws.amazon.com/cli/latest/reference/dms/index.html)、ソースエンドポイントを作成するときに設定を指定します。

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


| 名前 | 説明 | 
| --- | --- | 
| `ActivateSafeguard` | この属性は Safeguard をオンまたはオフにする。`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 />Always On クラスター内のすべてのノードでトランザクションバックアップをポーリングする必要がある場合 AWS DMS は、この属性を に設定します`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 Server 上で継続的なレプリケーションを設定する場合、このエンドポイント設定を使用する。このパラメータは、 AWS DMS バージョン 3.4.7 以降でサポートされています。スタンドアロン SQL Server での継続的なレプリケーションの設定については、「[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 で 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/ja_jp/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 Server での継続的なレプリケーションのセットアップ](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 を のソースとして使用するデータ移行は、ほとんどの SQL Server データ型 AWS DMS をサポートします。次の表は、 の使用時にサポートされる 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 ステートメントであっても、 はターゲットの LOB 列 AWS DMS を更新します。<br />CDC 中、 はプライマリキーを含むテーブルでのみ CLOB データ型 AWS DMS をサポートします。 | 
| NCHAR | WSTRING | 
| NVARCHAR (長さ) | WSTRING | 
| NVARCHAR (最大) | NCLOB<br />NTEXT<br />このデータ型を で使用するには AWS DMS、特定のタスクで SupportLobs の使用を有効にする必要があります。Lob サポートの有効化に関する詳細については、[AWS DMS タスクでのソースデータベースの LOB サポートの設定](CHAP_Tasks.LOBSupport.md) をご参照ください。<br />SQL Server テーブルの場合、SQL Server の LOB 列の値を変更しない UPDATE ステートメントであっても、 はターゲットの LOB 列 AWS DMS を更新します。<br />CDC 中、 はプライマリキーを含むテーブルでのみ CLOB データ型 AWS DMS をサポートします。 | 
| BINARY | BYTES | 
| VARBINARY | BYTES | 
| VARBINARY (最大) | BLOB<br />IMAGE<br />SQL Server テーブルの場合、SQL Server の LOB 列の値を変更しない UPDATE ステートメントであっても、 はターゲットの LOB 列 AWS DMS を更新します。<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 ステートメントであっても、 はターゲットの LOB 列 AWS DMS を更新します。<br />このデータ型を で使用するには AWS DMS、特定のタスクで NCLOB データ型の使用を有効にする必要があります。<br />CDC 中、 はプライマリキーを含むテーブルでのみ NCLOB データ型 AWS DMS をサポートします。 | 
| GEOMETRY | このデータ型をサポートするターゲットエンドポイントにレプリケートする場合は、GEOMETRY を使用します。<br />このデータ型をサポートしないターゲットエンドポイントにレプリケートする場合は、CLOB を使用します。 | 
| GEOGRAPHY | このデータ型をサポートするターゲットエンドポイントにレプリケートする場合は、GEOGRAPHY を使用します。<br />このデータ型をサポートしないターゲットエンドポイントにレプリケートする場合は、CLOB を使用します。 | 

AWS DMS は、次のデータ型のフィールドを含むテーブルをサポートしていません。
+ CURSOR
+ SQL\_VARIANT
+ TABLE

**注記**  
ユーザー定義のデータ型は、基本型に従ってサポートされます。たとえば、DATETIME をベースとするユーザー定義のデータ型は DATETIME データ型として扱われます。