目次

Search

  1. はじめに
  2. 一括取り込みデータベース

一括取り込みデータベース

一括取り込みデータベース

Microsoft SQL Server、RDS for SQL Server、Azure SQL Database、Azure Managed Instanceソース

Microsoft SQL Server、RDS for SQL Server、Azure SQL Database、Azure Managed Instanceソース

データベース取り込みタスクでMicrosoft SQL Serverソースを使用するには、最初にソースデータベースを準備し、使用に関する考慮事項を確認してください。SQL Serverソースタイプには、オンプレミスのSQL Server、Relational Database Service(RDS)for SQL Server、Azure SQL Database、およびAzure SQL Managed Instanceが含まれます。

ソースの準備:

  • SQL Serverソースタイプの場合、
    一括取り込みデータベース
    がサポートしているSQL Serverのエディションとバージョンを使用していることを確認します。KB記事「FAQ: What are the supported sources and targets for IICS Cloud Mass Ingestion service?」を参照してください。
  • SQL Serverソースを使用した増分変更データキャプチャ(CDC)操作の場合、
    一括取り込みデータベース
    には複数の変更キャプチャメソッドが用意されています。SQL Serverソースデータベースの準備は、使用するCDCメソッドによって異なります。
    使用可能な変更キャプチャメソッドは次のとおりです。
    • トランザクションログとCDCテーブルを使用するログベースの変更データキャプチャ。
      一括取り込みデータベース
      は、SQL Serverトランザクションログと有効なSQL Server CDCテーブルからデータの変更を読み取ります。この方法では、ユーザーの権限を拡張する必要があります。ソーステーブルでSQL Server CDCを有効にする必要があります。
    • CDCテーブルのみを使用した変更データキャプチャ。ユーザーは少なくともソーステーブルとCDCテーブルに対するSELECT権限を持っている必要があります。ソーステーブルでSQL Server CDCを有効にする必要があります。
    • クエリベースの変更データキャプチャ。変更データキャプチャでは、共通のCDCクエリカラムを参照するWHERE句を含むSQLステートメントを使用して、挿入および更新の変更がある行を識別します。ソースデータベースの設定は、各ソーステーブルへのCDCクエリカラムの追加に制限されます。ユーザーは、少なくともソーステーブルへの読み取り専用アクセス権を持つ必要があります。
    詳細については、SQL Serverソースの変更キャプチャメカニズムを参照してください。
  • トランザクションログによるログベースのCDCを使用する増分ロードジョブの場合は、SQL Serverソース接続で指定したデータベースユーザーにdb_ownerロールとVIEW ANY DEFINITION特権があることを確認します。これらの特権を付与するには、SQL Serverソースタイプに応じて、次のいずれかのSQL文を使用します。
    Azure SQL Managed Instanceを含むSQL Serverオンプレミスソースの場合:
    USE master; CREATE DATABASE <database>; CREATE LOGIN <login_name> WITH PASSWORD = '<password>'; CREATE USER <user> FOR LOGIN <login_name>; GRANT SELECT ON master.sys.fn_dblog TO <user>; GRANT VIEW SERVER STATE TO <login_name>; GRANT VIEW ANY DEFINITION TO <login_name>; USE <db>; CREATE USER <user> FOR LOGIN <login_name>; EXEC sp_addrolemember 'db_owner', '<user>'; EXEC sys.sp_cdc_enable_db
    RDS for SQL Serverの場合:
    USE master; CREATE DATABASE <database>; CREATE LOGIN <login> WITH PASSWORD = '<password>'; USE <database>; EXEC msdb.dbo.rds_cdc_enable_db '<database>'; CREATE USER <user> FOR LOGIN <login_name>; USE master; GRANT VIEW SERVER STATE TO <login_name >; GRANT VIEW ANY DEFINITION TO <login_name >; USE <database>; EXEC sp_addrolemember 'db_owner', '<user>';
  • SQL Serverソースを持ち、ログベースのCDCを使用するデータベース取り込み増分ロードジョブ、および初期ロードと増分ロードの組み合わせジョブの場合は、ソースデータベースでSQL Server変更データキャプチャ(CDC)を有効にする必要があります。
    • オンプレミスのSQL Serverソースの場合は、データベースコンテキストの
      sys.sp_cdc_enable_db
      ストアドプロシージャを実行します。sysadminロールが必要です。
    • Amazon Relational Database Service(RDS)for SQL Serverソースの場合は、マスターユーザーとしてログインし、
      msdb.dbo.rds_cdc_enable_db '
      database_name
      '
      ストアドプロシージャを実行します。
    SQL Server CDCが有効になると、SQL ServerはトランザクションログとCDCテーブルに追加情報を書き込みます。この情報は、一括取り込みデータベースが増分CDC処理中に使用します。
    または、データベース取り込みタスクを作成するときに、データベースおよび選択したソーステーブルのすべてのカラムでCDCを有効にするスクリプトを生成することもできます。CDCスクリプトを実行するには、sysadminロールが必要です。
    一括取り込みデータベース
    では、1019を超えるカラムを含むテーブルに対してCDCを有効にすることはできません。
  • クエリベースのCDCを使用する増分ロード操作、または初期ロードと増分ロードの組み合わせ操作の場合、ソーステーブルには、変更行を示すために使用されるCDCクエリカラムを含める必要があります。
    データベース統合
    タスクを作成する前に、クエリカラムをソーステーブルに追加する必要があります。CDCクエリカラムタイプは、タイムゾーンがないタイムスタンプに相当する必要があります。クエリカラムでサポートされているSQL Serverデータ型は、DATETIMEとDATETIME2です。

使用に関する考慮事項:

  • 一括取り込みデータベース
    は、SQL Serverソースに対して次の代替キャプチャメソッドを提供します。
    • ログベース
      。SQL ServerトランザクションログとCDCテーブルから変更データをキャプチャします。
    • CDCテーブル
      。SQL Server CDCテーブルからのみ変更データをキャプチャします。
    • クエリベース
      。CDCクエリカラムを指すSQL WHERE句を使用して、挿入と更新をキャプチャします。
    各キャプチャメソッドの詳細については、SQL Serverソースの変更キャプチャメカニズムを参照してください。
  • 一括取り込みデータベース
    は、
    データベース統合
    ジョブでオンプレミスのSQL Server、Amazon RDS for SQL Server、Azure SQL Managed Instance、およびAzure SQL Databaseソースのすべてのロードタイプをサポートします。ただし、増分ロードジョブ、または初期ロードと増分ロードの組み合わせジョブのAzure SQL Databaseソースの場合、トランザクションログによる
    ログベース
    のキャプチャメソッドを使用することはできません。
  • ログベースのCDCを使用するタスクの場合にSQL ServerデータベースでCDCを有効にすると、SQL Serverは、SQL Serverエージェントによって実行されるキャプチャジョブとクリーンアップジョブを自動的に作成します。キャプチャジョブは、SQL Server CDCテーブルへの入力を担当します。クリーンアップジョブは、CDCテーブルからのレコードをクリーンアップする役割を果たします。CDCテーブルのデータ保持期間のデフォルト値は72時間、つまり3日です。
    sys.sp_cdc_help_jobs
    ストアドプロシージャを実行して結果の保持期間の値を確認すると、現在の保持期間を確認できます。ダウンタイムが3日を超えることが予想される場合は、
    sys.sp_cdc_change_job
    ストアドプロシージャまたはSQL Serverエージェントのクリーンアップジョブで保持期間を調整できます。クリーンアップジョブを一時停止することもできます。
  • 一括取り込みデータベース
    はSQL Serverのページ圧縮とソースデータの行圧縮をサポートします。
  • 一括取り込みデータベース
    では、ソーステーブルの各行が一意であることを想定しているため、各ソーステーブルにプライマリキーを持たせることをお勧めします。
    一括取り込みデータベース
    は、プライマリキーの代わりに一意のインデックスを許可しません。プライマリキーが指定されていない場合、
    一括取り込みデータベース
    はすべてのカラムをプライマリキーの一部であるかのように扱います。例外: SQL ServerクエリベースのCDCの場合、各ソーステーブルにプライマリキーが必要です。
  • トランザクションログを使用するログベースのCDCの場合、
    一括取り込みデータベース
    には、ソースデータベースに対する読み取り/書き込みアクセス権が必要です。SQL Server Always On可用性グループを使用する場合、この要件が意味するのは、
    一括取り込みデータベース
    が読み取り/書き込みプライマリレプリカから変更データをキャプチャできるが、読み取り専用セカンダリレプリカからはキャプチャできないことです。
  • Microsoft SQL ServerソースでAlways Encrypted方式を使用してカラムデータを暗号化している場合、データベース取り込みタスクの
    [ソース]
    ページの
    [CDCスクリプト]
    フィールドから生成されたCDCスクリプトは実行できません。この問題は、SQL Serverの制限が原因で発生します。この問題は、Transparent Data Encryption(TDE)では発生しません。
  • 一括取り込みデータベース
    は、データベース取り込み増分ロードジョブでMicrosoft SQL Serverソースのスキーマドリフトオプションをサポートします。次の制限が適用されます。
    • Microsoft SQL Serverは、変更データキャプチャ(CDC)が有効になっているテーブルとカラムの名前変更をサポートしていません。
    • Microsoft SQL Serverは、CDCテーブルのプライマリキーの変更をサポートしていません。
    • 一括取り込みデータベース
      がCDCテーブルから変更データを直接読み取った場合、作成後にCDCテーブルが変更されることはありません。ソーステーブルで発生したDDLの変更は、CDCテーブルにNULLとしてレプリケートされます。DDLの変更をCDCテーブルにレプリケートするには、タスクウィザードの
      [ソース]
      ページでpwx.custom.sslr_cdc_manage_instancesカスタムプロパティを1に設定します。このカスタムプロパティを使用すると、CDCテーブルを変更してソーステーブルのDDLの変更を反映し、DMLキャプチャを強化することができます。CDCテーブルのアクティブな管理を有効にするには、db_ownerロールが必要です。
  • ソーステーブルのパーティションの変更により行セットIDが変更された場合、
    一括取り込みデータベース
    は変更を処理して、データベース取り込みジョブがテーブルからDML変更をキャプチャし続けることができるようにします。
  • クエリベースのCDCメソッドを使用した増分ロードおよび初期ロードと増分ロードの組み合わせジョブには、次の制限が適用されます。
    • 選択したソーステーブルごとにプライマリキーが必要です。ソーステーブルにプライマリキーが存在しない場合、変更データキャプチャはテーブルを無視し、選択されたソーステーブルの残りの処理を続行します。どのソーステーブルにもプライマリキーがない場合、ジョブは失敗します。
    • クエリベースのCDCは、削除操作をキャプチャしません。
    • 挿入と更新の操作はすべて更新/挿入として扱われ、監視インタフェースに表示され、更新としてログに記録されます。
    • ラージオブジェクト(LOB)カラムからのデータレプリケーションはサポートされていません。ソーステーブルにLOBカラムが含まれている場合、
      一括取り込みデータベース
      はこれらのカラムに対してNULLをプロパゲートします。
    • 特定のサイクルの開始時に夏時間またはタイムゾーンの変更が検出された場合、またはジョブが失敗状態または停止状態から再開されたときに、
      一括取り込みデータベース
      は再開してそのサイクルで発生した変更を処理します。
  • タスクウィザードの
    [ソース]
    ページの
    [詳細]
    [LOBを含める]
    を選択した場合、データベース取り込みジョブで、Microsoft SQL Serverのラージオブジェクト(LOB)カラムからデータをレプリケートできます。
    サポートされるターゲットタイプは、ロードタイプによって異なります。
    • 初期ロードジョブの場合: Amazon Redshift、Amazon S3、Databricks Delta、Google BigQuery、Google Cloud Storage、Microsoft Azure Data Lake Storage Gen2、Microsoft Azure Synapse Analytics、Oracle、Oracle Cloud Object Storage、Snowflake、およびSQL Server。
    • 増分ロードジョブの場合: Azure Event Hubs、Databricks Delta、Snowflake、およびSQL Server。
    • 初期ロードと増分ロードの組み合わせジョブの場合: Databricks Delta、Snowflake、およびSQL Server。
    LOBデータ型は、GEOGRAPHY、GEOMETRY、IMAGE、VARBINARY(MAX)、VARCHAR(MAX)、NVARCHAR(MAX)、TEXT、NTEXT、およびXMLです。LOBデータは、ターゲットに書き込まれる前に切り詰められる場合があります。切り詰めポイントは、データ型、ターゲットタイプ、およびロードタイプによって異なります。詳細については、ソースの設定の[LOBを含める]に関する説明を参照してください。
  • 一括取り込みデータベース
    は、SQL Serverの永続化されていない計算カラムからのデータをレプリケートしません。ログベースまたはクエリベースのCDCメソッドを使用する初期ロードジョブ、増分ロードジョブ、および初期ロードと増分ロードの組み合わせジョブの場合、永続化された計算カラムはターゲットにレプリケートされます。CDCテーブルからのみ変更をキャプチャする増分ロードジョブ、および初期ロードと増分ロードの組み合わせジョブの場合、永続化された計算カラムは、カラムがNULL値を許容するかどうかに応じて、NULLまたは空の値としてレプリケートされます。
  • SQL ServerソースとSQL Serverターゲットを持ち、sql_variantソースカラムを含むデータベース取り込みの初期ロードジョブは、ターゲット上でsql_variantデータを16進形式に変換します。データを16進形式からvarbinary形式に変換するには、次のクエリを実行します。
    SELECT <
    column_name
    >, CONVERT(varbinary,<
    column_name
    >) from <
    table_name
    >;
    <
    column_name
    >と<
    table_name
    >を実際のターゲットカラムとテーブル名に置き換えます。
  • SQL Server Hierarchyidデータ型は、
    データベース統合
    増分ロード、およびSnowflakeターゲットを持つ初期ロードジョブと増分ロードジョブの組み合わせではサポートされていません。
    一括取り込みデータベース
    は、このデータ型を持つカラムに対してnullをプロパゲートします。詳細については、Default Data Type Mappingsを参照してください。
  • SQL Serverソースを持ち、複数のエージェントが含まれているSecure Agentグループを使用するデータベース取り組み増分ロードジョブおよび初期ロードと増分ロードの組み合わせジョブは、アクティブなエージェントの実行が停止すると、次の制限に従ってグループ内の別のエージェントに切り替えることができます。
    • ジョブにKafkaターゲットを含めることはできません。
    • ジョブで永続ストレージを有効にすることはできません。
    • ジョブでは、クエリベースのCDCメソッドを使用して、タイムスタンプカラムをクエリして変更をキャプチャすることはできません。
    • 切り替えるには、ジョブを停止して再開する必要があります。
  • SQL ServerソースがAlways On可用性グループ内にある場合、データベース取り込み増分ロードジョブおよび組み合わせロードジョブは、プライマリノードまたはセカンダリノードのトランザクションログまたはCDCテーブルから変更データをキャプチャできます。また、ノードが使用できなくなった場合、可用性グループリスナを指すようにSQL Server接続を構成していれば、データベース取り込みジョブは可用性レプリカ内のプライマリデータベースまたはセカンダリデータベースにフェールオーバーして処理を続行できます。可用性グループリスナーは、SQL Server物理インスタンス名を知らなくても、一括取り込みデータベースが可用性グループの可用性レプリカ内のデータベースにアクセスするために使用できる仮想ネットワーク名(VNN)です。
  • SQL Serverソースを使用したデータベース取り込みジョブの実行後、レプリケーション用に追加のソースカラムを選択してタスクを再デプロイした場合、ジョブは追加のカラムを使用してターゲットテーブルをすぐに再作成したり、それらのデータをレプリケートしたりしません。ただし、増分ロードジョブ、または初期ロードと増分ロードの組み合わせジョブでは、スキーマドリフトの
    [カラムの追加]
    オプションを
    [レプリケート]
    に設定した場合、次の新しいDML変更レコードを処理するときに、新しく選択したカラムがターゲットに追加され、データがレプリケートされます。初期ロードジョブでは、次回のジョブ実行時に、新しく選択したカラムがターゲットに追加され、データがレプリケートされます。