このページには、次に関する情報が記載されています。
- Datastream が移行元 SQL Server データベースから pull されているデータを処理する方法の動作
- Datastream でサポートされている SQL Server データベースのバージョン。
- SQL Server データベースを移行元として使用する場合の既知の制限事項。
動作
Datastream は、次のいずれかの CDC メソッドを使用して、データ操作言語(DML)の変更を追跡します。
トランザクション ログ
この CDC メソッドを使用すると、Datastream はトランザクション ログから直接ソース内の変更を読み取ります。この方法では、必要なリソースが少なく、データの取得が速くなりますが、制限が多くなります。
データが失われないよう、Datastream での読み取り前にログが切り捨てられないことが重要です。一方で、ログファイルをあまりにも長期間保持すると、必要とする保存容量を占有してしまい、結果的にデータベース インスタンスが読み取り専用モードになってしまう可能性があります。
CDC リーダーがログを読み取るのに十分な時間を確保しながら、ログの切り捨てによって保存容量を開放するには、ポーリング間隔の変更や切り捨て防止対策の設定など、追加の構成手順を適用する必要があります。これらの手順により、Datastream 側でダウンタイムが発生した場合や、ソース データベースと Datastream の間で接続の問題が発生した場合でも Datastream がデータを読み取れるよう、保護を強化できます。
これらの追加対策を適用する方法の詳細な手順については、ソース SQL Server データベースを構成するページを表示して、データベースのタイプを選択してください。
テーブルを変更
変更テーブルの CDC メソッドを使用すると、ユーザーはログを保持する時間を短縮できるので、保存容量を節約できますが、トランザクション ログメソッドよりもスループットが低くなります。この方法は、トランザクション ログよりも制限が少ないです。たとえば、ログの切り捨てによるストリームの永続的な障害のリスクを排除し、暗号化されたテーブルのレプリケーションをサポートします。詳細については、既知の制限事項をご覧ください。
この CDC メソッドを使用する場合、専用の変更テーブルを使用して、ソースへの変更が追跡されます。トランザクション ログは引き続き使用されますが、使用範囲は限定的であり、長期間保持する必要はありません。DML イベントがソーステーブルに適用されると、対応する変更テーブルに変更が複製されます。変更テーブルの構造はソーステーブルと同じですが、変更のメタデータを含めるための列が追加されます。commit されたトランザクションのみが、commit オペレーションのログシーケンス番号(LSN)とともに変更テーブルに追加されます。
バージョン
Datastream は、SQL Server データベースの次のバージョンとエディションをサポートしています。
- 次のバージョンを使用するセルフマネージド(オンプレミスまたはクラウドホスト型):
- Enterprise: 2008 以降
- Standard: 2016 SP1 以降
- Developer: 2008 以降
- Amazon RDS for SQL Server
Azure SQL Database(ティア S3 以上)。
Cloud SQL for SQL Server
Datastream は、次のバージョンの SQL Server データベースをサポートしていません。
- SQL Server Standard エディション(バージョン 2008 から 2014)
- SQL Server Express
- SQL Server Web
既知の制限事項
SQL Server データベースを移行元として使用する場合の既知の制限事項は次のとおりです。
- ストリームは 10,000 テーブルに制限されています。
- 次の条件が満たされない限り、5 億行を超えるテーブルはバックフィルできません。
- テーブルには一意のインデックスがある。
- どのインデックス列も null 値を許容できない。
- インデックスのすべての列がストリームに含まれる。
- 遅延耐久性または高速化データベース復元(ADR)が有効になっているデータベースはサポートされていません。
- システム テーブルに対する変更のストリーミングはサポートされていません。
- Windows Active Directory(AD)認証はサポートされていません。
- 次のデータ型はサポートされておらず、移行先に複製されません。
SQL_VARIANT
HIERARCHYID
GEOMETRY
GEOGRAPHY
- Datastream はユーザー定義データ型を複製しますが、宛先に保存されるのは、ユーザー定義型の派生元の基本のデータ型です。たとえば、
VARCHAR(50)
データ型に基づいてUSERNAME
データ型を定義すると、データはVARCHAR(50)
として宛先に保存されます。 Datastream は、一意のインデックスのないテーブルの大規模なオブジェクト列(
TEXT
、NTEXT
、XML
、IMAGE
)と最大可変長列(VARCHAR(MAX)
、VARBINARY(MAX)
、NVARCHAR(MAX)
)の CDC をサポートしていません。大きなオブジェクト列がストリームに含まれていない場合、CDC はサポートされます。
Datastream は、テーブル変更の CDC メソッドを使用する場合、ソース スキーマの変更の複製をサポートしていません。次のスキーマの変更により、データが破損したり、イベントの処理に失敗したりする可能性があります。
- 列の追加: 新しい列は宛先に複製されません。
- 列の削除: これらの列のデータは
NULL
値に置き換えられます。 - データ型の変更: Datastream は、宛先にデータを挿入しようとし、データが拒否された場合はエラーを発生させます。
- 列の名前変更: CDC が有効になっている SQL Server ではサポートされていません。
Datastream はデータ マスキングをサポートしていません。データはマスキングなしで複製されます。
Datastream では、データ階層アプリケーション パッケージ(DACPAC)パッケージを使用したデータベースに適用された変更の複製はサポートされていません。
Datastream は、
WRITETEXT
ステートメントまたはUPDATETEXT
ステートメントを使用して行われた変更は複製されません。Datastream は、計算された列の複製をサポートしていません。
Datastream は、
PAGE
、COLUMNSTORE
、COLUMNSTORE ARCHIVE
の圧縮タイプをサポートしていません。
トランザクション ログメソッドを使用する場合の追加の制限事項
トランザクション ログの CDC メソッドを使用する場合は、次の追加制限事項が適用されます。
- 透過的データ暗号化(TDE)はサポートされていません。
- 列レベルの暗号化はサポートされていません。これらの列のデータは
NULL
値に置き換えられます。 - Datastream は
ROLLBACK TO SAVEPOINT
ステートメントをサポートしていません。このようなロールバック イベントは無視され、移行先に複製されません。 - Datastream は、次のタイプのテーブルの 8 KB を超える行に対する CDC をサポートしていません。
- 一意のインデックスのないテーブル
- 1 つ以上の可変長列(
VARCHAR
、VARBINARY
、NVARCHAR
)を持つ一意の非クラスタ化インデックスのみを含むテーブル
Datastream は、次のタイプのテーブルの大規模なオブジェクト列(
TEXT
、NTEXT
、XML
、IMAGE
)の CDC をサポートしていません。- 一意のインデックスのないテーブル
- 1 つ以上の可変長列(
VARCHAR
、VARBINARY
、NVARCHAR
)を持つ一意の非クラスタ化インデックスのみを含むテーブル
大きなオブジェクト列がストリームに含まれていない場合は、有効なインデックスがある場合にのみ、そのようなテーブルに対して CDC がサポートされます。
次のステップ
- Datastream で使用する SQL Server ソースの構成方法を学習する。