Tous les produits
Search
Centre de documentation

DataWorks:Source de données SQL Server

Dernière mise à jour :Oct 09, 2026

La source de données SQL Server permet la lecture et l'écriture de données dans SQL Server via un canal bidirectionnel. Cette rubrique décrit les fonctionnalité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 connaître les capacités du pilote, consultez la documentation officielle. Le pilote prend en charge les versions SQL Server suivantes :

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

Limites

La synchronisation par lots peut lire les vues.

Types de champs pris en charge

Pour la liste complète des types de champs SQL Server, consultez la documentation SQL Server. Le tableau suivant utilise SQL Server 2016 comme exemple pour illustrer les types courants et leur prise en charge.

Type de champ 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 mappages de types SQL Server pour SQL Server Reader et SQL Server Writer.

Catégorie de type

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 de 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 des tâches de synchronisation des données

Pour obtenir des informations sur le point d'entrée et la procédure de configuration d'une tâche de synchronisation, consultez les guides de configuration suivants.

Configurer une tâche de synchronisation par lots à table unique

Configurer une tâche de synchronisation de lecture par lots pour toute la base de données

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

FAQ

  • Récupération des données sur une configuration primaire-réplique

    Dans une configuration de reprise après sinistre primaire-réplique, la réplique récupère continuellement les données du serveur primaire via les journaux binaires. La réplication peut présenter un décalage, notamment en raison des latences réseau. Par conséquent, les données de la réplique peuvent différer considérablement de celles du serveur primaire, et les données synchronisées depuis la réplique peuvent ne pas constituer un instantané complet à l'instant T.

  • Contraintes de cohérence

    SQL Server est un SGBDR et peut fournir des interfaces de requête fortement cohérentes. Par exemple, si un autre processus d'écriture met à jour la base de données après le démarrage d'une tâche de synchronisation, SQL Server Reader ne capturera pas ces données mises à jour en raison du comportement d'instantané de la base de données.

    Ceci décrit la cohérence dans le modèle monothread de SQL Server Reader. Étant donné que SQL Server Reader peut extraire les données de manière concurrente selon votre configuration, une cohérence stricte ne peut pas toujours être garantie.

    Lorsque SQL Server Reader divise les données par splitPk, il démarre plusieurs tâches concurrentes. Ces tâches ne partagent pas une seule transaction de lecture et démarrent à des moments différents, de sorte que les données résultantes ne constituent pas un instantané complet et cohérent.

    Un instantané cohérent sur plusieurs threads n'est actuellement pas réalisable techniquement. Les approches d'ingénierie suivantes présentent des compromis ; choisissez celle qui correspond à vos besoins.

    • Utilisez la synchronisation monothread sans division des données. Elle est plus lente, mais offre une bonne cohérence.

    • Arrêtez les autres processus d'écriture afin que les données restent statiques, par exemple en verrouillant la table ou en arrêtant la synchronisation des répliques. Cela peut affecter les activités en ligne.

  • Encodage de la base de données

    SQL Server Reader utilise JDBC pour extraire les données. JDBC gère différents encodages et les convertit en interne, il n'est donc pas nécessaire de spécifier l'encodage pour SQL Server Reader.

  • Synchronisation incrémentielle des données

    SQL Server Reader extrait les données avec des instructions SELECT JDBC. Utilisez SELECT…WHERE… pour l'extraction incrémentielle de ces manières :

    • Lorsqu'une application en ligne écrit des données, elle renseigne le champ de modification avec l'horodatage du changement pour les insertions, les mises à jour et les suppressions logiques. SQL Server Reader peut utiliser une condition WHERE après l'horodatage de la synchronisation précédente.

    • Pour les enregistrements en ajout seul, définissez une condition WHERE basée sur l'ID auto-incrémenté le plus élevé de l'étape précédente.

    Si aucun champ métier n'identifie les enregistrements insérés ou modifiés, SQL Server Reader ne peut pas synchroniser de manière incrémentielle et doit synchroniser toutes les données.

  • Sécurité SQL

    SQL Server Reader fournit querySql afin que vous puissiez écrire une requête d'extraction SELECT, mais il ne valide pas la sécurité de querySql.

Annexe : Exemples de scripts et 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 selon 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",//Numéro de version. "steps":[ { "stepType":"sqlserver",//Nom du plug-in. "parameter":{ "datasource":"",//Source de données. "column":[//Champs. "id", "name" ], "where":"",//Condition de filtrage. "splitPk":"",//Si splitPk est spécifié, les données sont divisées par ce champ. "table":""//Table de données. }, "name":"Reader", "category":"reader" }, { "stepType":"stream", "parameter":{}, "name":"Writer", "category":"writer" } ], "setting":{ "errorLimit":{ "record":"0"//Nombre d'enregistrements d'erreur. }, "speed":{ "throttle":true,//Lorsque throttle est false, mbps est ignoré et le débit est illimité ; lorsque true, le débit est limité. "concurrent":1 //Concurrence des tâches. "mbps":"12",//Limite de débit. Ici, 1 mbps = 1 Mo/s. } }, "order":{ "hops":[ { "from":"Reader", "to":"Writer" } ] } }

Pour interroger avec querySql, utilisez un script Reader comme suit. Ici, la source de données SQL Server est sql_server_source, la table est dbo.test_table et la colonne 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

Nom de la source de données. En mode script, vous pouvez ajouter une source de données. La valeur doit correspondre au nom de la source de données ajoutée.

Oui

Aucune

table

Nom de la table à synchroniser. Une tâche ne prend en charge qu'une seule table.

Oui

Aucune

column

Colonnes à synchroniser depuis la table configurée, décrites sous forme de tableau JSON. Par défaut, toutes les colonnes sont sélectionnées, par exemple [ * ].

  • Vous pouvez sélectionner uniquement certaines colonnes pour l'exportation.

  • Vous pouvez réorganiser les colonnes pour l'exportation au lieu de suivre le schéma de la table.

  • Vous pouvez configurer des constantes selon 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 régulier.

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

    • 1 est une constante entière.

    • 'mingya.wmy' est une constante de chaîne. Incluez la paire de guillemets simples.

    • '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.

  • columnSpécifiez explicitement un ensemble non vide de colonnes à synchroniser.

Oui

Aucune

splitFactor

Facteur de division qui définit le nombre de fragments de données. Avec plusieurs tâches concurrentes, les données sont divisées en concurrency × splitFactor fragments. Par exemple, concurrency = 5 et splitFactor = 5 produisent 5 × 5 = 25 fragments, exécutés sur cinq threads concurrents.

Remarque

Plage recommandée : 1 à 100. Une valeur excessivement grande peut provoquer une erreur de mémoire insuffisante.

Non

5

splitPk

Lorsque SQL Server Reader extrait des données, la spécification de splitPk signifie que vous souhaitez diviser les données par le champ splitPk. La synchronisation démarre des tâches concurrentes pour améliorer l'efficacité.

  • Nous recommandons d'utiliser la clé primaire de la table pour splitPk car les valeurs de clé primaire sont généralement distribuées uniformément, réduisant ainsi le risque de points chauds de données.

  • splitPk prend actuellement en charge uniquement les valeurs entières, et non les chaînes, les nombres à virgule flottante, les dates ou d'autres types. SQL Server Reader signale une erreur si vous spécifiez un type non pris en charge.

Non

Aucune

where

Une condition de filtrage. SQL Server Reader assemble une instruction SQL à partir des conditions column, table et where spécifiées et extrait les données avec cette instruction. Pour les tests, vous pouvez spécifier limit 10 comme condition WHERE. En pratique, vous pouvez synchroniser les données du jour actuel en définissant WHERE sur gmt_create > ${bizdate}.

  • Une condition WHERE peut activer la synchronisation incrémentielle.

  • Une condition WHERE vide synchronise la table entière.

Non

Aucune

querySql

Format :"querysql" : "instruction de requête"Dans certains scénarios, WHERE ne peut pas décrire le filtre requis. Utilisez querySql pour fournir du SQL personnalisé. Lorsque querySql est configuré, Data Integration ignore les tables et les colonnes et filtre les données directement avec la requête, par exemple en joignant plusieurs tables avec 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 conditions column, table et where.

Non

Aucune

fetchSize

Le nombre d'enregistrements récupérés par lot par le plug-in et le serveur de base de données. Il détermine le nombre d'interactions réseau avec Data Integration et peut améliorer les performances d'extraction.

Remarque

fetchSizeUne valeur excessivement grande (> 2 048) peut provoquer une erreur de mémoire insuffisante (OOM) pendant la synchronisation.

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

  • SQL Server Reader assemble les informations configurées table, column et where dans une instruction SQL et l'envoie à SQL Server.

  • SQL Server Reader assemble les informations querySql configurées. Pour les informations querySql, SQL Server Reader les envoie directement à SQL Server.

Exemple de script Writer

{ "type":"job", "version":"2.0",//Numéro de version. "steps":[ { "stepType":"stream", "parameter":{}, "name":"Reader", "category":"reader" }, { "stepType":"sqlserver",//Nom du plug-in. "parameter":{ "postSql":[],//Instructions SQL à exécuter après la tâche de synchronisation. "datasource":"",//Source de données. "column":[//Champs. "id", "name" ], "table":"",//Nom de la table. "preSql":[]//Instructions SQL à exécuter avant la tâche de synchronisation. }, "name":"Writer", "category":"writer" } ], "setting":{ "errorLimit":{ "record":"0"//Nombre d'enregistrements d'erreur. }, "speed":{ "throttle":true,//Lorsque throttle est false, mbps est ignoré et le débit est illimité ; lorsque true, le débit est limité. "concurrent":1, //Concurrence des tâches. "mbps":"12"//Limite de débit. Ici, 1 mbps = 1 Mo/s. } }, "order":{ "hops":[ { "from":"Reader", "to":"Writer" } ] } }

Paramètres du script Writer

Paramètre

Description

Obligatoire

Valeur par défaut

datasource

Nom de la source de données. En mode script, vous pouvez ajouter une source de données. La valeur doit correspondre au nom de la source de données ajoutée.

Oui

Aucune

table

Nom de la table à synchroniser.

Oui

Aucune

column

Champs de la table de destination à écrire, séparés par des virgules. Exemple :"column":["id","name","age"]. Pour écrire toutes les colonnes dans l'ordre, utilisez *, par exemple "column":["*"].

Oui

Aucune

preSql

Instructions SQL à exécuter avant la tâche de synchronisation. Le mode Assistant autorise une seule instruction ; le mode script prend en charge plusieurs instructions, telles que l'effacement des anciennes données.

Non

Aucune

postSql

Instructions SQL à exécuter après la tâche de synchronisation. Le mode Assistant autorise une seule instruction ; le mode script prend en charge plusieurs instructions, telles que l'ajout d'un horodatage.

Non

Aucune

writeMode

Choisissez un mode d'importation. Pris en charge : insert. Si un conflit de clé primaire ou d'index unique se produit, Data Integration traite la ligne comme des données incorrectes et conserve la ligne d'origine.

Non

insert

batchSize

Le nombre d'enregistrements soumis en un lot. Cela réduit considérablement les interactions réseau entre Data Integration et SQL Server et améliore le débit. Une valeur excessivement grande peut provoquer une erreur de mémoire insuffisante (OOM) pendant la synchronisation.

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