すべてのプロダクト
Search
ドキュメントセンター

DataWorks:SQL Server データソース

最終更新日:Dec 16, 2025

SQL Server データソースは、SQL Server からのデータの読み取りと書き込みを行うための双方向チャネルを提供します。このトピックでは、DataWorks の SQL Server に対するデータ同期機能について説明します。

サポートされるバージョン

SQL Server Reader は `com.microsoft.sqlserver sqljdbc4 4.0` ドライバーを使用します。ドライバーの機能に関する詳細については、公式ドキュメントをご参照ください。このドライバーは、次の SQL Server バージョンをサポートしています:

バージョン

サポート状況 (はい/いいえ)

SQL Server 2016

はい

SQL Server 2014

はい

SQL Server 2012

はい

PDW 2008R2 AU34

はい

SQL Server 2008 R2

はい

SQL Server 2008

はい

SQL Server 2019

いいえ

SQL Server 2018

いいえ

Azure SQL Managed Instance

いいえ

Azure Synapse Analytics

いいえ

Azure SQL Database

はい

制限事項

オフライン同期は、ビューからのデータ読み取りをサポートしています。

サポートされるフィールドタイプ

SQL Server のフィールドタイプの完全なリストについては、SQL Server ヘルプドキュメントをご参照ください。次の表は、SQL Server 2016 を例として、サポートされている一般的なフィールドタイプの一覧です。

SQL Server 2016 フィールドタイプ

SQL Server Reader

SQL Server Writer

bigint

サポート済み

サポート済み

bit

サポート済み

サポート済み

decimal

サポート済み

サポート済み

int

サポート済み

サポート済み

money

サポート済み

サポート済み

numeric

サポート済み

サポート済み

smallint

サポート済み

サポート済み

smallmoney

サポート済み

サポート済み

tinyint

サポート済み

サポート済み

float

サポート済み

サポート済み

real

サポート済み

サポート済み

date

サポート済み

サポート済み

datetime2

サポート済み

サポート済み

datetime

サポート済み

サポート済み

datetimeoffset

サポート対象外

サポート対象外

smalldatetime

サポート済み

サポート済み

time

サポート済み

サポート済み

char

サポート済み

サポート済み

text

サポート済み

サポート済み

varchar

サポート済み

サポート済み

nchar

サポート済み

サポート済み

ntext

サポート済み

サポート済み

nvarchar

サポート済み

サポート済み

binary

サポート済み

サポート済み

image

サポート済み

サポート済み

varbinary

サポート済み

サポート済み

cursor

サポート対象外

サポート対象外

hierarchyid

サポート対象外

サポート対象外

sql_variant

サポート済み

サポート済み

Spatial Geometry Types

サポート対象外

サポート対象外

table

サポート対象外

サポート対象外

rowversion

サポート対象外

サポート対象外

uniqueidentifier

サポート済み

サポート済み

xml

サポート済み

サポート済み

Spatial Geography Types

サポート対象外

サポート対象外

次の表は、SQL Server Reader と SQL Server Writer の型マッピングの一覧です。

型カテゴリ

SQL Server データの型

整数

BIGINT、INT、SMALLINT、および TINYINT

浮動小数点

FLOAT、DECIMAL、REAL、および NUMERIC

文字列

CHAR、NCHAR、NTEXT、NVARCHAR、TEXT、VARCHAR、NVARCHAR(MAX)、および VARCHAR(MAX)

日付と時刻

DATE、DATETIME、および TIME

ブール値

BIT

バイナリ

BINARY、VARBINARY、VARBINARY(MAX)、および TIMESTAMP

データソースの追加

DataWorks で同期タスクを開発する前に、「データソース管理」の手順に従って、必要なデータソースを DataWorks に追加する必要があります。データソースを追加する際に、DataWorks コンソールでパラメーターの説明を表示して、各パラメーターの意味を理解することができます

データ同期タスクの開発

同期タスクの構成のエントリポイントとプロシージャについては、以下の構成ガイドをご参照ください。

単一テーブルのオフライン同期タスクの構成

データベース全体のオフライン読み取り同期タスクの構成

手順については、「データベース全体のリアルタイム同期タスクの構成」をご参照ください。

よくある質問

  • アクティブ/スタンバイ同期のデータ復元

    SQL Server がアクティブ/スタンバイのディザスタリカバリ構成を使用している場合、アクティブ/スタンバイ同期の問題が発生する可能性があります。この構成では、セカンダリデータベースは binlog を使用してプライマリデータベースから継続的にデータを復元します。プライマリデータベースとセカンダリデータベース間のデータ同期には時間差が生じる可能性があります。この遅延は、ネットワーク遅延の期間中など、特定の状況では大きくなることがあります。その結果、セカンダリデータベースに復元されたデータは、プライマリデータベースのデータと大幅に異なる場合があります。セカンダリデータベースから同期されたデータは、完全で最新のスナップショットではありません。

  • 整合性の制約

    SQL Server は、強力な整合性を持つデータクエリインターフェイスを提供するリレーショナルデータベース管理システム (RDBMS) です。たとえば、同期タスク中、SQL Server Reader はデータベースのスナップショット機能により、他のトランザクションからの更新データを取得しません。

    上記の説明は、シングルスレッドモデルにおける SQL Server Reader のデータ整合性に適用されます。SQL Server Reader は、設定に基づいて同時データ抽出を使用できます。そのため、強力なデータ整合性は保証できません。

    SQL Server Reader が `splitPk` パラメーターに基づいてデータを分割した後、複数の同時タスクを開始してデータを同期します。これらの同時タスクは同じ読み取りトランザクションに属さず、異なる時間に実行されます。したがって、同期されたデータは完全で一貫性のあるデータスナップショットではありません。

    マルチスレッド環境における一貫性のあるスナップショットのための技術的なソリューションは現在利用できません。この問題は、エンジニアリングの観点からのみ対処できます。エンジニアリング手法にはトレードオフが伴います。参考として、以下のソリューションを提供します。必要に応じてソリューションを選択してください。

    • データシャーディングなしのシングルスレッド同期を使用します。欠点は、同期速度が遅くなることですが、整合性は保証されます。

    • 他のデータ書き込みを停止して、現在のデータが静的であることを保証します。たとえば、テーブルをロックしたり、セカンダリデータベースへの同期を停止したりできます。欠点は、これがオンラインサービスに影響を与える可能性があることです。

  • データベースのエンコーディング

    SQL Server Reader は、Java Database Connectivity (JDBC) を使用してデータを抽出します。JDBC は、さまざまなエンコーディングと自然に互換性があり、基盤となるレイヤーでエンコーディング変換を実行します。したがって、SQL Server Reader にエンコーディングを指定する必要はありません。エンコーディングは自動的に取得され、トランスコードされます。

  • 増分データ同期のメソッド

    SQL Server Reader は SELECT 文を使用してデータを抽出します。SELECT…WHERE… 文を使用して、増分データ抽出を実行できます。メソッドは次のとおりです:

    • 新規、更新、または論理的に削除されたレコードの変更フィールドにタイムスタンプを設定するアプリケーションの場合、SQL Server Reader は最後の同期のタイムスタンプを指定する WHERE 句のみを必要とします。

    • 新規トランザクションデータの場合、SQL Server Reader は前回の同期からの最大自動増分 ID を指定する WHERE 句のみを必要とします。

    アプリケーションに新規データと変更データを区別するフィールドがない場合、SQL Server Reader は増分データ同期を実行できません。この場合、完全データのみを同期できます。

  • SQL セキュリティ

    SQL Server Reader は、データ抽出のための SELECT 文を作成できる `querySql` パラメーターを提供します。SQL Server Reader は、これらの `querySql` 文に対してセキュリティチェックを実行しません。

付録:スクリプトデモとパラメーター

コードエディタを使用したバッチ同期タスクの構成

コードエディタを使用してバッチ同期タスクを構成する場合、統一されたスクリプトフォーマット要件に基づいて、スクリプト内の関連パラメーターを構成する必要があります。詳細については、「コードエディタでのタスクの構成」をご参照ください。以下の情報は、コードエディタを使用してバッチ同期タスクを構成する際に、データソースに対して構成する必要があるパラメーターについて説明しています。

Reader スクリプトデモ

{
    "type":"job",
    "version":"2.0",// バージョン番号。
    "steps":[
        {
            "stepType":"sqlserver",// プラグイン名。
            "parameter":{
                "datasource":"",// データソース。
                "column":[// フィールド。
                    "id",
                    "name"
                ],
                "where":"",// フィルター条件。
                "splitPk":"",// splitPk を指定すると、指定されたフィールドに基づいてデータがシャーディングされます。
                "table":""// データテーブル。
            },
            "name":"Reader",
            "category":"reader"
        },
        {
            "stepType":"stream",
            "parameter":{},
            "name":"Writer",
            "category":"writer"
        }
    ],
    "setting":{
        "errorLimit":{
            "record":"0"// エラーレコード数。
        },
        "speed":{
            "throttle":true,// throttle を false に設定すると、mbps パラメーターは有効にならず、レート制限は課されません。throttle を true に設定すると、レート制限が課されます。
            "concurrent":1, // 同時ジョブ数。
            "mbps":"12"// レート制限。1 mbps は 1 MB/s に相当します。
        }
    },
    "order":{
        "hops":[
            {
                "from":"Reader",
                "to":"Writer"
            }
        ]
    }
}

`querySql` パラメーターを使用してクエリを実行する場合は、Reader セクションに次のサンプルスクリプトを使用できます。この例では、SQL Server データソースは `sql_server_source`、クエリ対象のテーブルは `dbo.test_table`、クエリ対象の列は `name` です。

{
    "stepType": "sqlserver",
    "parameter": {
        "connection": [
            {
                "querySql": ["select name from dbo.test_table"],
                "datasource": "sql_server_source"
            }
        ],
        "datasource": "sql_server_source",
        "column": ["name"],
        "where": "",
        "splitPk": "id"
    },
    "name": "Reader",
    "category": "reader"
}

Reader スクリプトパラメーター

パラメーター

説明

必須

デフォルト値

datasource

データソースの名前。コードエディタはデータソースの追加をサポートしています。このパラメーターの値は、追加されたデータソースの名前と同じでなければなりません。

はい

なし

table

データを同期するテーブルの名前。1 つのジョブで 1 つのテーブルからのみデータを同期できます。

はい

なし

column

ソーステーブルから同期する列。JSON 配列を使用して列情報を指定します。デフォルトでは、すべての列が同期されます。例:["*"]。

  • 列のプルーニングがサポートされています。エクスポートする特定の列を選択できます。

  • 列の並べ替えがサポートされています。テーブルスキーマとは異なる順序で列をエクスポートできます。

  • 定数構成がサポートされています。定数は MySQL SQL 構文形式で指定する必要があります。例:["id", "table","1", "'john.doe'", "'null'", "to_char(a+1)", "2.3" , "true"]

    • id は通常の列名です。

    • table は予約語を含む列名です。

    • 1 は整数定数です。

    • 'mingya.wmy' は文字列定数です (単一引用符で囲む必要があることに注意してください)。

    • 'null' は文字列です。

    • to_char(a + 1) は関数式です。

    • 2.3 は浮動小数点数です。

    • true はブール値です。

  • column パラメーターは、同期する列のコレクションを指定する必要があり、空にすることはできません。

はい

なし

splitFactor

シャーディング係数。データ同期のシャード数を構成できます。複数の同時スレッドを構成する場合、データは concurrency × splitFactor 個のシャードに分割されます。たとえば、concurrency が 5 で splitFactor が 5 の場合、データは 5 × 5 = 25 個のシャードに分割され、5 つの同時スレッドで処理されます。

説明

推奨値は 1 から 100 までの整数です。値が大きすぎると、Out-of-Memory (OOM) エラーが発生する可能性があります。

いいえ

5

splitPk

SQL Server Reader がデータを抽出する際に、splitPk パラメーターを指定して、指定されたフィールドに基づいてデータをシャーディングできます。これにより、データ同期システムが同時タスクを開始してデータを同期し、効率を向上させることができます。

  • splitPk にはテーブルのプライマリキーを使用することを推奨します。プライマリキーは通常、均等に分散されているため、シャードでのデータホットスポットを防ぐのに役立ちます。

  • 現在、splitPk は整数フィールドのシャーディングのみをサポートしています。文字列、浮動小数点、日付などの他の型のフィールドを指定すると、SQL Server Reader はエラーを報告します。

いいえ

なし

where

フィルター条件。SQL Server Reader は、指定された columntable、および where パラメーターに基づいて SQL 文を構築し、その SQL 文に基づいてデータを抽出します。たとえば、テスト目的で、where 条件を `limit 10` に設定できます。実際のビジネスシナリオでは、where 条件を gmt_create > ${bizdate} に設定して、当日のデータを同期する場合があります。

  • where 条件は、効率的な増分データ同期に使用できます。

  • where パラメーターを空のままにすると、テーブル内のすべてのデータが同期されます。

いいえ

なし

querySql

フォーマット:"querysql" : "クエリ文"。一部のビジネスシナリオでは、where パラメーターだけではフィルター条件を定義するのに不十分な場合があります。このパラメーターを使用して、フィルター SQL 文をカスタマイズできます。このパラメーターを構成すると、データ同期システムは tables と columns パラメーターを無視し、このパラメーターの内容を使用してデータをフィルター処理します。たとえば、複数テーブル結合後にデータを同期するには、select a,b from table_a join table_b on table_a.id = table_b.id を使用します。querySql を構成すると、SQL Server Reader は columntable、および where パラメーターを無視します。

いいえ

なし

fetchSize

このパラメーターは、データベースサーバーから各バッチでフェッチするレコード数を指定します。この値は、Data Integration とサーバー間のネットワーク対話の回数を決定し、データ抽出のパフォーマンスを向上させることができます。

説明

大きすぎる fetchSize 値 (> 2048) は、データ同期プロセスで OOM エラーを引き起こす可能性があります。

いいえ

1024

driverVersion

SQL Server ドライバーのバージョン。デフォルト値は 4.0 です。このパラメーターを 12.10 に設定すると、Active Directory サービスプリンシパル認証をサポートするバージョンを使用できます。

いいえ

4.0

  • 構成した tablecolumn、および where 情報については、SQL Server Reader がそれらを SQL 文に組み立て、その文を SQL Server データベースに送信します。

  • 構成した querySql 情報については、SQL Server がそれを直接 SQL Server データベースに送信します。

Writer スクリプトデモ

{
    "type":"job",
    "version":"2.0",// バージョン番号。
    "steps":[
        {
            "stepType":"stream",
            "parameter":{},
            "name":"Reader",
            "category":"reader"
        },
        {
            "stepType":"sqlserver",// プラグイン名。
            "parameter":{
                "postSql":[],// データ同期タスクの後に実行される SQL 文。
                "datasource":"",// データソース。
                "column":[// フィールド。
                    "id",
                    "name"
                ],
                "table":"",// テーブル名。
                "preSql":[]// データ同期タスクの前に実行される SQL 文。
            },
            "name":"Writer",
            "category":"writer"
        }
    ],
    "setting":{
        "errorLimit":{
            "record":"0"// エラーレコード数。
        },
        "speed":{
            "throttle":true,// throttle を false に設定すると、mbps パラメーターは有効にならず、レート制限は課されません。throttle を true に設定すると、レート制限が課されます。
            "concurrent":1, // 同時ジョブ数。
            "mbps":"12"// レート制限。1 mbps は 1 MB/s に相当します。
        }
    },
    "order":{
        "hops":[
            {
                "from":"Reader",
                "to":"Writer"
            }
        ]
    }
}

Writer スクリプトパラメーター

パラメーター

説明

必須

デフォルト値

datasource

データソースの名前。コードエディタはデータソースの追加をサポートしています。このパラメーターの値は、追加されたデータソースの名前と同じでなければなりません。

はい

なし

table

データを同期する先のテーブルの名前。

はい

なし

column

データを書き込む先のテーブルのフィールド。フィールドはコンマ (,) で区切ります。例:"column":["id","name","age"]。すべての列に順番にデータを書き込むには、アスタリスク (*) を使用します。例:"column":["*"]

はい

なし

preSql

データ同期タスクが実行される前に実行される SQL 文。コードレス UI では、1 つの SQL 文のみ実行できます。コードエディタでは、古いデータをクリアする文など、複数の SQL 文を実行できます。

いいえ

なし

postSql

データ同期タスクが実行された後に実行される SQL 文。コードレス UI では、1 つの SQL 文のみ実行できます。コードエディタでは、タイムスタンプを追加する文など、複数の SQL 文を実行できます。

いいえ

なし

writeMode

インポートモード。insert モードがサポートされています。プライマリキーまたは一意なインデックスの競合が発生した場合、Data Integration はデータをダーティデータとして扱いますが、元のデータは保持します。

いいえ

insert

batchSize

各バッチで送信するレコード数。値を大きくすると、データ同期システムと SQL Server 間のネットワーク対話が大幅に減少し、全体のスループットが向上します。この値が大きすぎると、データ同期プロセスで OOM エラーが発生する可能性があります。

いいえ

1,024

driverVersion

SQL Server ドライバーのバージョン。デフォルト値は 4.0 です。このパラメーターを 12.10 に設定すると、Active Directory サービスプリンシパル認証をサポートするバージョンを使用できます。

いいえ

4.0