Tous les produits
Search
Centre de documentation

DataWorks:Source de données SQL Server

Dernière mise à jour :Aug 10, 2026

La source de données SQL Server offre un canal bidirectionnel pour la lecture et l'écriture dans les bases de données SQL Server. Cette rubrique décrit les capacités de synchronisation des données SQL Server prises en charge par DataWorks.

Versions prises en charge

SQL Server Reader utilise le pilote com.microsoft.sqlserver sqljdbc4 4,0. Pour plus de détails sur le pilote, consultez la documentation officielle. Le tableau ci-dessous répertorie les versions de SQL Server prises en charge par ce pilote :

Version

Prise en charge (Oui/Non)

SQL Server 2016

Oui

SQL Server 2014

Oui

SQL Server 2012

Oui

PDW 2008R2 AU34

Oui

SQL Server 2008 R2

Oui

SQL Server 2008

Oui

SQL Server 2019

Non

SQL Server 2018

Non

Azure SQL Managed Instance

Non

Azure Synapse Analytics

Non

Azure SQL Database

Oui

Limitations

La synchronisation par lots prend en charge la lecture à partir de vues.

Types de colonne pris en charge

Pour obtenir la liste complète des types de colonne SQL Server, consultez la documentation SQL Server. Le tableau suivant, qui prend SQL Server 2016 comme exemple, répertorie la prise en charge des types de colonne courants.

Type de colonne SQL Server 2016

SQL Server Reader

SQL Server Writer

bigint

Pris en charge

Pris en charge

bit

Pris en charge

Pris en charge

decimal

Pris en charge

Pris en charge

int

Pris en charge

Pris en charge

money

Pris en charge

Pris en charge

numeric

Pris en charge

Pris en charge

smallint

Pris en charge

Pris en charge

smallmoney

Pris en charge

Pris en charge

tinyint

Pris en charge

Pris en charge

float

Pris en charge

Pris en charge

real

Pris en charge

Pris en charge

date

Pris en charge

Pris en charge

datetime2

Pris en charge

Pris en charge

datetime

Pris en charge

Pris en charge

datetimeoffset

Non pris en charge

Non pris en charge

smalldatetime

Pris en charge

Pris en charge

time

Pris en charge

Pris en charge

char

Pris en charge

Pris en charge

text

Pris en charge

Pris en charge

varchar

Pris en charge

Pris en charge

nchar

Pris en charge

Pris en charge

ntext

Pris en charge

Pris en charge

nvarchar

Pris en charge

Pris en charge

binary

Pris en charge

Pris en charge

image

Pris en charge

Pris en charge

varbinary

Pris en charge

Pris en charge

cursor

Non pris en charge

Non pris en charge

hierarchyid

Non pris en charge

Non pris en charge

sql_variant

Pris en charge

Pris en charge

Spatial Geometry Types

Non pris en charge

Non pris en charge

table

Non pris en charge

Non pris en charge

rowversion

Non pris en charge

Non pris en charge

uniqueidentifier

Pris en charge

Pris en charge

xml

Pris en charge

Pris en charge

Spatial Geography Types

Non pris en charge

Non pris en charge

Le tableau suivant répertorie les conversions de type de colonne effectuées par SQL Server Reader et SQL Server Writer pour SQL Server.

Catégorie

Type de données SQL Server

Entier

BIGINT, INT, SMALLINT et TINYINT

Virgule flottante

FLOAT, DECIMAL, REAL et NUMERIC

Chaîne

CHAR, NCHAR, NTEXT, NVARCHAR, TEXT, VARCHAR, NVARCHAR(MAX) et VARCHAR(MAX)

Date et heure

DATE, DATETIME et TIME

Booléen

BIT

Binaire

BINARY, VARBINARY, VARBINARY(MAX) et TIMESTAMP

Ajouter une source de données

Avant de développer une tâche de synchronisation dans DataWorks, ajoutez la source de données requise à DataWorks en suivant les instructions fournies dans la rubrique Configuration de la source de données. Consultez les descriptions des paramètres dans la console DataWorks pour comprendre la signification des paramètres lors de l'ajout d'une source de données.

Développer une tâche de synchronisation des données

Pour connaître le point d'entrée et la procédure de configuration d'une tâche de synchronisation, consultez les guides de configuration suivants.

Guide de configuration d'une tâche de synchronisation par lots à table unique

Guide de configuration d'une tâche de synchronisation par lots pour la lecture de base de données entière

Pour la procédure, consultez la rubrique Configurer des tâches de synchronisation en temps réel pour l'intégralité de la base de données.

FAQ

  • Récupération des données de synchronisation primaire-secondaire

    La synchronisation primaire-secondaire fait référence à une configuration où SQL Server utilise une reprise après sinistre de type primaire-secondaire, et la base de données secondaire récupère continuellement les données de la base de données principale via le journal binaire (binlog). En raison du décalage temporel inhérent à la synchronisation des données entre le primaire et le secondaire, notamment en cas de latence réseau, les données récupérées sur le secondaire peuvent différer considérablement de celles du primaire. Par conséquent, les données synchronisées à partir du secondaire ne constituent pas un instantané complet à l'instant T.

  • Contraintes de cohérence

    SQL Server appartient à la catégorie des SGBDR (Systèmes de gestion de base de données relationnelle) et peut fournir des interfaces de requête de données fortement cohérentes. Par exemple, lorsqu'une tâche de synchronisation est en cours d'exécution, si d'autres processus écrivent dans la base de données, SQL Server Reader ne verra pas les données nouvellement écrites ou mises à jour, grâce à la fonctionnalité d'instantané de la base de données.

    Ce qui précède décrit le comportement de cohérence des données de SQL Server Reader en mode monothread. SQL Server Reader pouvant effectuer une extraction de données concurrente selon votre configuration, une cohérence stricte des données ne peut être garantie.

    Lorsque SQL Server Reader divise les données en fonction de splitPk, il démarre plusieurs tâches concurrentes pour effectuer la synchronisation. Ces tâches concurrentes n'appartiennent pas à la même transaction de lecture et présentent des décalages temporels entre elles. Par conséquent, les données extraites ne constituent pas un instantané complet et cohérent.

    Techniquement, il n'est pas possible d'obtenir un instantané cohérent avec le multithreading ; cette problématique doit être abordée d'un point de vue ingénierie. Les approches d'ingénierie impliquent des compromis. Les options suivantes sont proposées ; choisissez celle qui correspond le mieux à votre situation.

    • Utilisez la synchronisation monothread sans fragmentation des données. L'inconvénient est une vitesse plus lente, mais la cohérence est assurée.

    • Arrêtez les autres processus d'écriture afin que les données actuelles soient statiques, par exemple en verrouillant la table ou en arrêtant la synchronisation secondaire. L'inconvénient est un impact potentiel sur les activités en ligne.

  • Encodage de la base de données

    SQL Server Reader utilise JDBC pour l'extraction des données. JDBC s'adapte nativement à divers encodages et effectue la conversion d'encodage au niveau inférieur. Par conséquent, SQL Server Reader ne nécessite pas que vous spécifiiez l'encodage ; il peut le détecter et le convertir automatiquement.

  • Méthodes de synchronisation incrémentielle des données

    SQL Server Reader utilise des instructions SELECT JDBC pour extraire les données. Vous pouvez donc utiliser SELECT…WHERE… pour l'extraction incrémentielle des données, comme suit :

    • Lorsqu'une application en ligne écrit dans la base de données (y compris les insertions, les mises à jour et les suppressions logiques), elle renseigne une colonne de modification avec l'horodatage de la modification. Pour de telles applications, SQL Server Reader n'a qu'à ajouter l'horodatage de la synchronisation précédente à la clause WHERE.

    • Pour les données de flux en ajout seul (append-only), SQL Server Reader n'a qu'à ajouter l'ID auto-incrémenté maximal de l'exécution précédente à la clause WHERE.

    S'il n'existe aucune colonne métier permettant de distinguer les enregistrements nouvellement insérés ou mis à jour, SQL Server Reader ne peut pas effectuer de synchronisation incrémentielle et ne peut synchroniser que l'ensemble complet des données.

  • Sécurité SQL

    SQL Server Reader fournit le paramètre querySql pour vous permettre d'implémenter des instructions SELECT d'extraction personnalisées. SQL Server Reader n'effectue aucune validation de sécurité sur querySql.

Annexe : Exemple de script et descriptions des paramètres

Configurer une tâche de synchronisation par lots à l'aide de l'éditeur de code

Si vous souhaitez configurer une tâche de synchronisation par lots à l'aide de l'éditeur de code, configurez les paramètres associés dans le script en respectant les exigences de format de script unifié. Pour plus d'informations, consultez la rubrique Configuration en mode script. Les informations suivantes décrivent les paramètres que vous devez configurer pour les sources de données lors de la configuration d'une tâche de synchronisation par lots à l'aide de l'éditeur de code.

Exemple de script Reader

{
    "type":"job",
    "version":"2.0",//Version number.
    "steps":[
        {
            "stepType":"sqlserver",//Plugin name.
            "parameter":{
                "datasource":"",//Data source.
                "column":[//Columns.
                    "id",
                    "name"
                ],
                "where":"",//Filter condition.
                "splitPk":"",//If splitPk is specified, it indicates that you want to use the field represented by splitPk for data sharding.
                "table":""//Data table.
            },
            "name":"Reader",
            "category":"reader"
        },
        {
            "stepType":"stream",
            "parameter":{},
            "name":"Writer",
            "category":"writer"
        }
    ],
    "setting":{
        "errorLimit":{
            "record":"0"//Number of error records.
        },
        "speed":{
            "throttle":true,//When throttle is false, the mbps parameter does not take effect, meaning no rate limiting; when throttle is true, rate limiting is enabled.
            "concurrent":1 //Job concurrency.
            "mbps":"12",//Rate limit, where 1 mbps = 1 MB/s.
        }
    },
    "order":{
        "hops":[
            {
                "from":"Reader",
                "to":"Writer"
            }
        ]
    }
}

Si vous souhaitez utiliser querySql, vous pouvez utiliser l'exemple de code de script Reader suivant (la source de données SQL Server est sql_server_source, la table cible est dbo.test_table et la colonne cible est 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"
}

Paramètres du script Reader

Paramètre

Description

Obligatoire

Valeur par défaut

datasource

Le nom de la source de données. Le mode script prend en charge l'ajout de sources de données. La valeur indiquée ici doit correspondre au nom de la source de données ajoutée.

Oui

Aucune

table

Le nom de la table à synchroniser. Une seule tâche peut synchroniser une seule table.

Oui

Aucune

column

L'ensemble des colonnes à synchroniser depuis la table configurée, décrit sous forme de tableau JSON. Par défaut, toutes les colonnes sont utilisées, par exemple [ * ].

  • L'élagage des colonnes est pris en charge. Autrement dit, vous pouvez exporter uniquement certaines colonnes.

  • Le réordonnancement des colonnes est pris en charge. Autrement dit, les colonnes n'ont pas besoin d'être exportées dans l'ordre du schéma de la table.

  • Les constantes sont prises en charge. Elles doivent respecter la syntaxe SQL MySQL, par exemple ["id", "table","1", "'mingya.wmy'", "'null'", "to_char(a+1)", "2,3" , "true"] .

    • id est un nom de colonne standard.

    • table est un nom de colonne contenant un mot réservé.

    • 1 est une constante entière.

    • 'mingya.wmy' est une constante chaîne (notez les guillemets simples obligatoires).

    • 'null' est une chaîne.

    • to_char(a + 1) est une expression de fonction.

    • 2,3 est un nombre à virgule flottante.

    • true est une valeur booléenne.

  • column doit spécifier explicitement les colonnes à synchroniser et ne peut pas être vide.

Oui

Aucune

splitFactor

Le facteur de division. Vous pouvez configurer le nombre de fragments dans lesquels les données synchronisées sont divisées. Si la concurrence est configurée, les données sont divisées en concurrency × splitFactor fragments. Par exemple, si concurrency = 5 et splitFactor = 5, les données sont divisées en 5 × 5 = 25 fragments exécutés sur 5 threads concurrents.

Remarque

Plage recommandée : 1 à 100. Des valeurs trop élevées peuvent provoquer des erreurs de mémoire insuffisante (OOM).

Non

5

splitPk

Lorsque SQL Server Reader extrait des données, la spécification de splitPk indique que vous souhaitez utiliser la colonne représentée par splitPk pour diviser les données. Le système de synchronisation des données démarre alors des tâches concurrentes pour améliorer l'efficacité de la synchronisation.

  • Nous vous recommandons d'utiliser la clé primaire de la table comme splitPk, car les clés primaires sont généralement réparties de manière uniforme, ce qui rend les fragments résultants moins sujets aux points chauds.

  • Actuellement, splitPk ne prend en charge que les colonnes entières pour la division ; les types chaîne, virgule flottante, date et autres ne sont pas pris en charge. Si vous spécifiez un type non pris en charge, SQL Server Reader génère une erreur.

Non

Aucune

where

La condition de filtre. SQL Server Reader construit une instruction SQL en utilisant la column, la table et la clause where spécifiées, et extrait les données à l'aide de cette instruction SQL. Par exemple, lors des tests, vous pouvez définir where sur limit 10. Dans les scénarios métier réels, vous synchronisez généralement les données du jour en cours, en définissant where sur gmt_create > ${bizdate}.

  • La condition where permet une synchronisation incrémentielle efficace des données métier.

  • Si where est vide, la table entière est synchronisée.

Non

Aucune

querySql

Format : "querysql" : "instruction de requête". Dans certains scénarios métier, le paramètre where seul ne suffit pas à exprimer les conditions de filtre ; vous pouvez donc utiliser ce paramètre pour définir une instruction SELECT personnalisée. Lorsque ce paramètre est configuré, le système de synchronisation des données ignore les paramètres tables et columns et utilise directement cette valeur pour filtrer les données. Par exemple, pour synchroniser des données après avoir joint plusieurs tables, utilisez select a,b from table_a join table_b on table_a.id = table_b.id. Lorsque vous configurez querySql, SQL Server Reader ignore les paramètres column, table et where.

Non

Aucune

fetchSize

Ce paramètre définit le nombre de lignes que le plugin récupère auprès du serveur de base de données à chaque lot. Il détermine le nombre d'allers-retours réseau entre Data Integration et le serveur et peut améliorer les performances d'extraction.

Remarque

Si fetchSize est trop élevé (> 2048), le processus de synchronisation peut manquer de mémoire (OOM).

Non

1024

driverVersion

La version du pilote SQL Server. La valeur par défaut est 4,0. Vous pouvez spécifier la version 12.10, qui prend en charge l'authentification par principal de service Active Directory.

Non

4,0

  • Pour les valeurs table, column et where que vous configurez, SQL Server Reader les assemble en une instruction SQL et l'envoie à la base de données SQL Server.

  • Pour la valeur querySql que vous configurez, SQL Server Reader l'envoie directement à la base de données SQL Server.

Exemple de script Writer

{
    "type":"job",
    "version":"2.0",//Version number.
    "steps":[
        {
            "stepType":"stream",
            "parameter":{},
            "name":"Reader",
            "category":"reader"
        },
        {
            "stepType":"sqlserver",//Plugin name.
            "parameter":{
                "postSql":[],//SQL statements to be executed after the data synchronization task.
                "datasource":"",//Data source.
                "column":[//Columns.
                    "id",
                    "name"
                ],
                "table":"",//Table name.
                "preSql":[]//SQL statements to be executed before the data synchronization task.
            },
            "name":"Writer",
            "category":"writer"
        }
    ],
    "setting":{
        "errorLimit":{
            "record":"0"//Number of error records.
        },
        "speed":{
            "throttle":true,//When throttle is false, the mbps parameter does not take effect, meaning no rate limiting; when throttle is true, rate limiting is enabled.
            "concurrent":1, //Job concurrency.
            "mbps":"12"//Rate limit, where 1 mbps = 1 MB/s.
        }
    },
    "order":{
        "hops":[
            {
                "from":"Reader",
                "to":"Writer"
            }
        ]
    }
}

Paramètres du script Writer

Paramètre

Description

Obligatoire

Valeur par défaut

datasource

Le nom de la source de données. Le mode script prend en charge l'ajout de sources de données. La valeur indiquée ici doit correspondre au nom de la source de données ajoutée.

Oui

Aucune

table

Le nom de la table à synchroniser.

Oui

Aucune

column

Les colonnes de la table cible dans lesquelles écrire, séparées par des virgules. Par exemple, "column":["id","name","age"]. Pour écrire dans toutes les colonnes dans l'ordre, utilisez *, par exemple "column":["*"].

Oui

Aucune

preSql

Instructions SQL à exécuter avant le démarrage de la tâche de synchronisation des données. En mode Assistant, une seule instruction SQL est autorisée ; en mode script, plusieurs instructions sont prises en charge, par exemple pour effacer les anciennes données.

Non

Aucune

postSql

Instructions SQL à exécuter après la fin de la tâche de synchronisation des données. En mode Assistant, une seule instruction SQL est autorisée ; en mode script, plusieurs instructions sont prises en charge, par exemple pour ajouter un horodatage.

Non

Aucune

writeMode

Le mode d'importation. Le mode insert est pris en charge. En cas de conflit de clé primaire ou d'index unique, Data Integration considère l'enregistrement comme une donnée erronée mais conserve les données d'origine.

Non

insert

batchSize

Le nombre d'enregistrements validés en un seul lot. Cette valeur peut réduire considérablement le nombre d'allers-retours réseau entre le système de synchronisation des données et SQL Server et améliorer le débit global. Si la valeur est trop élevée, le processus de synchronisation peut manquer de mémoire (OOM).

Non

1 024

driverVersion

La version du pilote SQL Server. La valeur par défaut est 4,0. Vous pouvez spécifier la version 12.10, qui prend en charge l'authentification par principal de service Active Directory.

Non

4,0