Microsoft SQL Server データを BigQuery に読み込む

注: この機能に関するフィードバックやサポートのリクエストについては、dts-preview-support@google.com までお問い合わせください。

Microsoft SQL Server から BigQuery への定期的なデータ転送をスケジュールするには、転送構成を作成して、転送するデータ オブジェクトとデータ転送のスケジュールを設定する頻度を指定します。転送構成を設定すると、BigQuery Data Transfer Service は、指定されたスケジュールで最新のデータを BigQuery テーブルに転送します。

Microsoft SQL Server 転送の仕組みについては、Microsoft SQL Server データ転送の概要をご覧ください。

制限事項

Microsoft SQL Server のデータ転送ジョブには、次の制限があります。

  • Microsoft SQL Server データベースへの同時接続数には上限があります。したがって、1 つの Microsoft SQL Server データベースへの同時転送実行数も制限されます。転送ジョブの同時実行数が、Microsoft SQL Server データベースでサポートされている同時接続の最大数より小さいことを確認します。
  • 一部の Microsoft SQL Server データ型は、データ損失を回避するために BigQuery の STRING 型にマッピングされる場合があります。たとえば、Microsoft SQL Server で精度と尺度が定義されていない特定の数値型は、BigQuery の STRING にマッピングされる場合があります。詳細については、データ型のマッピングをご覧ください。

増分転送の制限事項

Microsoft SQL Server の増分転送には、次の制限があります。

  • ウォーターマーク列として選択できるのは TIMESTAMP 列のみです。
  • 増分取り込みは、有効なウォーターマーク列があるアセットでのみサポートされます。
  • ウォーターマーク列の値は単調に増加する必要があります。
  • 増分転送では、ソーステーブルの削除オペレーションを同期できません。
  • 1 つの転送構成でサポートできるのは、増分取り込みまたは完全取り込みのいずれかのみです。
  • 最初の増分取り込みの実行後に、asset リスト内のオブジェクトを更新することはできません。
  • 最初の増分取り込みの実行後に、転送構成の書き込みモードを変更することはできません。
  • 最初の増分取り込みの実行後に、ウォーターマーク列または主キーを変更することはできません。
  • 宛先の BigQuery テーブルは、指定された主キーを使用してクラスタ化され、クラスタ化テーブルの制限が適用されます。
  • 既存の転送構成を初めて増分取り込みモードに更新すると、その更新後の最初のデータ転送で、データソースから利用可能なすべてのデータが転送されます。それ以降の増分データ転送では、データソースから新規および更新された行のみが転送されます。
  • ウォーターマーク列にインデックスを作成することをおすすめします。このコネクタは、増分転送のフィルタにウォーターマーク列を使用するため、これらの列にインデックスを付けるとパフォーマンスが向上します。
  • 増分転送を行う場合は、更新されたデータ型マッピングを使用する必要があります。

始める前に

Microsoft SQL Server データ転送のスケジュールを設定する前に、次の前提条件を満たす必要があります。

Microsoft SQL Server の前提条件

Microsoft SQL Server データベースにユーザー アカウントを作成しておく必要があります。詳細については、ログインを使用してユーザーを作成するをご覧ください。

BigQuery の前提条件

必要なロール

Microsoft SQL Server データ転送の作成に必要な権限を取得するには、プロジェクトに対する BigQuery 管理者 (roles/bigquery.admin)IAM ロールを付与するよう管理者に依頼します。ロールの付与については、プロジェクト、フォルダ、組織に対するアクセス権の管理をご覧ください。

この事前定義ロールには、Microsoft SQL Server のデータ転送の作成に必要な権限が含まれています。必要とされる正確な権限については、「必要な権限」セクションを開いてご確認ください。

必要な権限

Microsoft SQL Server データ転送を作成するには、次の権限が必要です。

  • bigquery.transfers.update
  • bigquery.datasets.get

カスタムロールや他の事前定義ロールを使用して、これらの権限を取得することもできます。

ネットワークの構成

Microsoft SQL Server データベース接続でパブリック IP アドレスを使用できない場合は、特定のネットワーク構成を設定する必要があります。詳しくは、以下のセクションをご覧ください。

Microsoft SQL Server のデータ転送を設定する

次のオプションのいずれかを選択します。

コンソール

  1. [データ転送] ページに移動します。

    [データ転送] に移動

  2. [転送を作成] をクリックします。

  3. [ソースタイプ] セクションの [ソース] で、[Microsoft SQL Server] を選択します。

  4. [データソースの詳細] セクションで、次のようにします。

    • [ネットワーク アタッチメント] で、既存のネットワーク アタッチメントを選択するか、[ネットワーク アタッチメントの作成] をクリックします。
    • [ホスト] に、Microsoft SQL Server データベースのホスト名または IP アドレスを入力します。
    • [ポート番号] に、Microsoft SQL Server データベースのポート番号を入力します。
    • [データベース名] に、Microsoft SQL Server データベースの名前を入力します。
    • [ユーザー名] に、Microsoft SQL Server データベース接続を開始する Microsoft SQL Server ユーザーのユーザー名を入力します。
    • [パスワード] に、Microsoft SQL Server データベース接続を開始する Microsoft SQL Server ユーザーのパスワードを入力します。
    • [TLS Mode] で、メニューからオプションを選択します。TLS モードの詳細については、TLS 構成をご覧ください。
    • [信頼できる PEM 証明書] に、データベース サーバーの TLS 証明書を発行した認証局(CA)の公開証明書を入力します。詳細については、信頼できるサーバー証明書(PEM)をご覧ください。
    • [以前のマッピングを有効にする] には、以前のデータ型マッピングを使用する場合は [true](デフォルト)を選択します。更新されたデータ型マッピングを使用する場合は [false] を選択します。増分転送を行う場合、この値は false にする必要があります。データ型マッピングの更新の詳細については、2027 年 3 月 16 日のログをご覧ください。
    • [取り込みタイプ] で、[完全] または [増分] を選択します。
    • [Microsoft SQL Server objects to transfer] で、Microsoft SQL Server テーブルを参照するか、転送に必要なテーブルの名前を手動で入力します。
  5. [転送先の設定] セクションの [データセット] で、データを保存するために作成したデータセットを選択するか、[新しいデータセットの作成] をクリックして、転送先データセットとして使用するデータセットを作成します。

  6. [転送構成名] セクションの [表示名] に、転送名を入力します。転送名には、後で修正が必要になった場合にその転送を特定できる任意の名前を使用できます。

  7. [スケジュール オプション] セクションで、次の操作を行います。

    • [繰り返しの頻度] を選択します。[時間]、[日](デフォルト)、[週]、[月] のいずれかを選択する場合は、頻度も指定する必要があります。[カスタム] オプションを選択して、より詳細な繰り返し頻度を作成することもできます。[オンデマンド] オプションを選択すると、このデータ転送は手動で転送をトリガーした場合にのみ実行されます。
    • 必要に応じて、[すぐに開始] を選択するか、[設定した時刻に開始] オプションを選択して開始日と実行時間を指定します。
  8. 省略可: [通知オプション] セクションで、次のようにします。

    • メール通知を有効にするには、[メール通知] の切り替えをクリックしてオンにします。このオプションを有効にすると、転送の実行が失敗した場合、転送管理者にメール通知が送信されます。
    • 転送の Pub/Sub 実行通知を構成するには、[Pub/Sub 通知] の切り替えをクリックしてオンにします。トピック名を選択するか、[トピックを作成する] をクリックしてトピックを作成します。
  9. 省略可: [詳細オプション] セクションで、この転送の暗号化タイプを選択します。 Google-owned and Google-managed encryption keyまたはお客様所有の Cloud Key Management Service 鍵のいずれかを選択できます。暗号鍵の詳細については、顧客管理の暗号鍵(CMEK)をご覧ください。

  10. [保存] をクリックします。

bq

bq mk コマンドを入力して、転送作成フラグ --transfer_config を指定します。

bq mk \
    --transfer_config \
    --project_id=PROJECT_ID \
    --data_source=DATA_SOURCE \
    --display_name=DISPLAY_NAME \
    --target_dataset=DATASET \
    --params='PARAMETERS'

次のように置き換えます。

  • PROJECT_ID(省略可): Google Cloud プロジェクト ID。--project_id フラグで特定のプロジェクトを指定しない場合は、デフォルトのプロジェクトが使用されます。
  • DATA_SOURCE: データソース(sqlserver)。
  • DISPLAY_NAME: データ転送構成の表示名。転送名には、後で修正が必要になった場合に識別できる任意の名前を使用できます。
  • DATASET: データ転送構成のターゲット データセット。
  • PARAMETERS: 作成される転送構成のパラメータを JSON 形式で指定します。例: --params='{"param":"param_value"}'。Microsoft SQL Server 転送のパラメータは次のとおりです。

    • connector.networkAttachment(省略可): Microsoft SQL Server データベースに接続するネットワーク アタッチメントの名前。
    • connector.database: Microsoft SQL Server データベースの名前。
    • connector.endpoint.host: データベースのホスト名または IP アドレス。
    • connector.endpoint.port: データベースのポート番号。
    • connector.authentication.username: データベース ユーザーのユーザー名
    • connector.authentication.password: データベース ユーザーのパスワード。
    • connector.legacyMapping: レガシー データ型マッピングを使用するには、true(デフォルト)に設定します。更新されたデータ型マッピングを使用するには、false に設定します。増分転送を行う場合、この値は false にする必要があります。データ型マッピングの更新の詳細については、2027 年 3 月 16 日のログをご覧ください。
    • connector.tls.mode: この転送で使用する TLS 構成を指定します。
      • ENCRYPT_VERIFY_CA_AND_HOST: データを暗号化し、CA とホスト名を検証する
      • ENCRYPT_VERIFY_CA: データを暗号化し、CA のみを検証する
      • ENCRYPT_VERIFY_NONE: データの暗号化のみ行う
      • DISABLE: 暗号化や検証を行わない場合に指定
    • connector.tls.trustedServerCertificate:(省略可)1 つ以上の PEM エンコード証明書を指定します。connector.tls.mode の値が ENCRYPT_VERIFY_CA_AND_HOST または ENCRYPT_VERIFY_CA の場合にのみ必須です。
    • ingestionType: full または incremental を指定します。増分転送はプレビュー版でサポートされています。詳細については、完全転送または増分転送をご覧ください。
    • writeMode: WRITE_MODE_APPEND または WRITE_MODE_UPSERT を指定します。
    • watermarkColumns: テーブル内の列をウォーターマーク列として指定します。このフィールドは増分転送の場合に必須です。
    • primaryKeys: テーブルの列を主キーとして指定します。このフィールドは増分転送の場合に必須です。
    • assets: 転送の一部として Microsoft SQL Server データベースから転送される Microsoft SQL Server テーブル名のリスト。

たとえば、次のコマンドは My Transfer という Microsoft SQL Server 転送を作成します。

bq mk \
    --transfer_config
    --target_dataset=mydataset
    --data_source=sqlserver
    --display_name='My Transfer'
    --params='{"assets":["DB1/DEPARTMENT","DB1/EMPLOYEES"],
        "connector.authentication.username": "User1",
        "connector.authentication.password":"ABC12345",
        "connector.database":"DB1",
        "connector.endpoint.host":"192.168.0.1",
        "connector.endpoint.port":"1520",
        "connector.networkAttachment":"projects/dev-project1/regions/us-central1/networkattachments/na1",
        "ingestionType":"incremental",
        "writeMode":"WRITE_MODE_APPEND",
        "watermarkColumns":["createdAt","createdAt"],
        "primaryKeys":[['dep_id'], ['report_by','report_title']],
        "connector.tls.mode": "ENCRYPT_VERIFY_CA_AND_HOST",
        "connector.tls.trustedServerCertificate": "PEM-encoded certificate"}'

増分転送中に複数のアセットを指定する場合、watermarkColumns フィールドと primaryKeys フィールドの値は、assets フィールドの値の位置に対応します。次の例では、dep_id はテーブル DB1/DEPARTMENT に対応し、report_by と report_title はテーブル DB1/EMPLOYEES に対応します。

      "primaryKeys":[['dep_id'], ['report_by','report_title']],
      "assets":["DB1/DEPARTMENT","DB1/EMPLOYEES"],
  

転送構成を保存すると、Microsoft SQL Server コネクタはスケジュール オプションに従って転送実行を自動的にトリガーします。転送を実行するたびに、Microsoft SQL Server コネクタは Microsoft SQL Server から BigQuery に使用可能なすべてのデータを転送します。

定期的なスケジュール外でデータ転送を手動で実行するには、バックフィル実行を開始します。

トラブルシューティング

データ転送に関する問題のトラブルシューティングについては、Microsoft SQL Server の転送に関する問題をご覧ください。

メタデータを転送する

Microsoft SQL Server コネクタを使用して、メタデータを Knowledge Catalog に転送することもできます。詳細については、Microsoft SQL Server メタデータを Knowledge Catalog に読み込むをご覧ください。

次のステップ