SQL Server レプリケーション ジョブでスキーマを変更する

このページでは、Microsoft SQL Server データベースから BigQuery テーブルにデータを複製するときに Cloud Data Fusion のスキーマを変更する方法について説明します。スキーマの変更後もレプリケーション ジョブが SQL Server ソースからデータを複製し続けるようにする手順は次のとおりです。

スキーマを変更する

  1. インスタンスに移動します:

    1. Google Cloud コンソールで、Cloud Data Fusion のページに移動します。

    2. Cloud Data Fusion Studio でインスタンスを開くには、[インスタンス]、[インスタンスを表示] の順にクリックします。

      [インスタンス] に移動

  2. Cloud Data Fusion ウェブ インターフェースで、[レプリケーション] をクリックします。

  3. レプリケーション ジョブを停止します。

  4. NULL 値を指定できる列の追加などのサポートされているスキーマの更新をソーステーブルに適用します。

  5. パラメータ @capture_instance に一意の値を指定して、sys.sp_cdc_enable_table プロシージャを使用して新しいキャプチャ テーブルを作成します。

  6. BigQuery のターゲット テーブルに同じスキーマ変更を適用します。

  7. レプリケーション ジョブを再起動します。

  8. 省略可: ジョブを停止した後に発生した新しい変更のストリーミングが開始されると、sys.sp_cdc_disable_table ストアド プロシージャを使用して古いキャプチャ テーブルを削除できます。パラメータ @capture_instance を古いキャプチャ インスタンス名に設定します。

前の手順で行ったように、スキーマをソーステーブルに適用した後、新しいキャプチャ テーブルを作成する前に、すべての変更は古いスキーマの古いキャプチャでキャプチャされます。列を追加した場合、その期間の変更イベントには新しい列のデータは含まれません。アプリケーションがこのような遷移を処理できない場合は、次の手順を行います。

  1. データベース レコードを生成するすべてのアプリケーションを停止します。

  2. レプリケーション ジョブが既存のイベントをすべて処理したことを確認します。

  3. レプリケーション ジョブを停止します。

  4. [NULL 値を指定できる列の追加] などのスキーマ変更をソーステービルに適用します。

  5. パラメータ @capture_instance に一意の値を指定して sys.sp_cdc_enable_table プロシージャを使用して、新しいキャプチャ テーブルを作成します。

  6. 最初の手順で停止したアプリケーションを再開します。

  7. BigQuery のターゲット テーブルに同じスキーマ変更を適用します。

  8. レプリケーション ジョブを再起動します。

  9. 省略可: 前の手順で新しいキャプチャ テーブルを作成した後に発生した新しい変更のストリーミングが開始されると、sys.sp_cdc_disable_table ストアド プロシージャを使用して古いキャプチャ テーブルを削除できます。パラメータ @capture_instance を古いキャプチャ インスタンス名に設定します。

次のステップ