Todos los productos
Search
Centro de documentos

DataWorks:Origen de datos de SQL Server

Última actualización: Oct 09, 2026

El origen de datos de SQL Server permite leer y escribir información en SQL Server mediante un canal bidireccional. En este tema se describen las capacidades de sincronización de datos de SQL Server que admite DataWorks.

Versiones compatibles

SQL Server Reader utiliza el controlador com.microsoft.sqlserver sqljdbc4 4.0. Para conocer las funcionalidades del controlador, consulte la documentación oficial. Este controlador es compatible con las siguientes versiones de SQL Server:

Versión

Compatible (sí/no)

SQL Server 2016

Sí

SQL Server 2014

Sí

SQL Server 2012

Sí

PDW 2008R2 AU34

Sí

SQL Server 2008 R2

Sí

SQL Server 2008

Sí

SQL Server 2019

No

SQL Server 2018

No

Azure SQL Managed Instance

No

Azure Synapse Analytics

No

Azure SQL Database

Sí

Límites

La sincronización por lotes puede leer vistas.

Tipos de campo compatibles

Para consultar el conjunto completo de tipos de campo de SQL Server, revise la documentación de SQL Server. A continuación se muestra una tabla que toma como ejemplo SQL Server 2016 para indicar los tipos comunes y si son compatibles.

Tipo de campo de SQL Server 2016

SQL Server Reader

SQL Server Writer

bigint

Compatible

Compatible

bit

Compatible

Compatible

decimal

Compatible

Compatible

int

Compatible

Compatible

money

Compatible

Compatible

numeric

Compatible

Compatible

smallint

Compatible

Compatible

smallmoney

Compatible

Compatible

tinyint

Compatible

Compatible

float

Compatible

Compatible

real

Compatible

Compatible

date

Compatible

Compatible

datetime2

Compatible

Compatible

datetime

Compatible

Compatible

datetimeoffset

No compatible

No compatible

smalldatetime

Compatible

Compatible

time

Compatible

Compatible

char

Compatible

Compatible

text

Compatible

Compatible

varchar

Compatible

Compatible

nchar

Compatible

Compatible

ntext

Compatible

Compatible

nvarchar

Compatible

Compatible

binary

Compatible

Compatible

image

Compatible

Compatible

varbinary

Compatible

Compatible

cursor

No compatible

No compatible

hierarchyid

No compatible

No compatible

sql_variant

Compatible

Compatible

Spatial Geometry Types

No compatible

No compatible

table

No compatible

No compatible

rowversion

No compatible

No compatible

uniqueidentifier

Compatible

Compatible

xml

Compatible

Compatible

Spatial Geography Types

No compatible

No compatible

En la siguiente tabla se muestran las asignaciones de tipos de SQL Server para SQL Server Reader y SQL Server Writer.

Categoría de tipo

Tipo de datos de SQL Server

Entero

BIGINT, INT, SMALLINT y TINYINT

Punto flotante

FLOAT, DECIMAL, REAL y NUMERIC

Cadena

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

Fecha y hora

DATE, DATETIME y TIME

Booleano

BIT

Binario

BINARY, VARBINARY, VARBINARY (MAX) y TIMESTAMP

Agregar un origen de datos

Antes de desarrollar una tarea de sincronización en DataWorks, debe agregar el origen de datos correspondiente siguiendo las instrucciones de Data source configuration. Consulte las descripciones de parámetros en la consola de DataWorks para comprender el significado de cada parámetro al agregar un origen de datos.

Desarrollar tareas de sincronización de datos

Para obtener información sobre el punto de entrada y el procedimiento de configuración de una tarea de sincronización, consulte las siguientes guías.

Configurar una tarea de sincronización por lotes de una sola tabla

Configurar una tarea de sincronización de lectura por lotes de una base de datos completa

Para conocer el procedimiento, consulte Configure real-time full-database synchronization tasks.

Preguntas frecuentes

  • Recuperación de datos en una configuración principal-réplica

    En una configuración de recuperación ante desastres de tipo principal-réplica, la réplica recupera datos continuamente desde el nodo principal mediante binlogs. La replicación puede presentar retrasos, sobre todo debido a demoras en la red. Por lo tanto, los datos de la réplica pueden diferir significativamente de los del nodo principal. Además, la información sincronizada desde la réplica podría no representar una instantánea completa del momento actual.

  • Restricciones de coherencia

    SQL Server es un RDBMS y ofrece interfaces de consulta fuertemente coherentes. Por ejemplo, si otro proceso de escritura actualiza la base de datos después de que inicie una tarea de sincronización, SQL Server Reader no captura esos cambios debido al comportamiento de instantánea de la base de datos.

    Lo anterior describe la coherencia bajo el modelo de un solo hilo de SQL Server Reader. Dado que este componente extrae datos de forma concurrente según su configuración, no siempre se garantiza una coherencia estricta.

    Cuando SQL Server Reader divide los datos mediante splitPk, inicia varias tareas simultáneas. Estas tareas no comparten una única transacción de lectura y comienzan en momentos distintos, por lo que los datos resultantes no constituyen una instantánea completa ni coherente.

    Actualmente no es viable lograr una instantánea coherente entre varios hilos. Los siguientes enfoques de ingeniería implican compromisos; elija el que mejor se adapte a sus necesidades.

    • Utilice la sincronización de un solo hilo sin dividir los datos. Es más lenta, pero ofrece buena coherencia.

    • Detenga otros procesos de escritura para que los datos permanezcan estáticos. Puede hacerlo bloqueando la tabla o deteniendo la sincronización de la réplica. Tenga en cuenta que esto podría afectar los servicios en línea.

  • Codificación de la base de datos

    SQL Server Reader usa JDBC para extraer datos. JDBC gestiona distintas codificaciones y las convierte internamente, por lo que no necesita especificar la codificación para SQL Server Reader.

  • Sincronización incremental de datos

    SQL Server Reader extrae datos mediante sentencias SELECT de JDBC. Utilice SELECT…WHERE… para realizar extracciones incrementales de las siguientes maneras:

    • Cuando una aplicación en línea escribe datos, llena el campo de modificación con la marca de tiempo del cambio para inserciones, actualizaciones y eliminaciones lógicas. SQL Server Reader puede aplicar una condición WHERE posterior a la marca de tiempo de la sincronización previa.

    • Para registros de solo anexión, establezca una condición WHERE basada en el identificador de incremento automático más alto de la etapa anterior.

    Si ningún campo de negocio identifica los registros insertados o modificados, SQL Server Reader no puede sincronizar de forma incremental y debe procesar todos los datos.

  • Seguridad de SQL

    SQL Server Reader proporciona querySql para que usted escriba una consulta SELECT de extracción, pero no valida la seguridad de querySql.

Apéndice: scripts y parámetros de ejemplo

Configurar una tarea de sincronización por lotes con el editor de código

Si desea configurar una tarea de sincronización por lotes con el editor de código, debe definir los parámetros correspondientes en el script conforme a los requisitos unificados de formato. Para obtener más información, consulte Script mode configuration. A continuación se describen los parámetros que debe configurar para los orígenes de datos cuando utilice el editor de código.

Script de ejemplo de Reader

{ "type":"job", "version":"2.0",//Version number. "steps":[ { "stepType":"sqlserver",//Plug-in name. "parameter":{ "datasource":"",//Data source. "column":[//Fields. "id", "name" ], "where":"",//Filter condition. "splitPk":"",//If splitPk is specified, data is split by that field. "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, mbps is ignored and throughput is unlimited; when true, throughput is limited. "concurrent":1 //Job concurrency. "mbps":"12",//Rate limit. Here, 1 mbps = 1 MB/s. } }, "order":{ "hops":[ { "from":"Reader", "to":"Writer" } ] } }

Para realizar consultas con querySql, utilice un script de Reader similar al siguiente. En este caso, el origen de datos de SQL Server es sql_server_source, la tabla es dbo.test_table y la columna es 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"
}

Parámetros del script de Reader

Parámetro

Descripción

Obligatorio

Valor predeterminado

datasource

Nombre del origen de datos. En el modo script, puede agregar un origen de datos. El valor debe coincidir con el nombre del origen agregado.

Sí

Ninguna

table

Nombre de la tabla que se va a sincronizar. Un trabajo solo admite una tabla.

Sí

Ninguna

column

Columnas que se sincronizarán desde la tabla configurada, descritas como una matriz JSON. De forma predeterminada, se seleccionan todas las columnas, por ejemplo, [ * ].

  • Puede seleccionar solo algunas columnas para exportarlas.

  • Es posible reordenar las columnas de exportación en lugar de seguir el esquema de la tabla.

  • Puede configurar constantes según la sintaxis SQL de MySQL, por ejemplo, ["id", "table","1", "'mingya.wmy'", "'null'", "to_char(a+1)", "2.3" , "true"] .

    • id es un nombre de columna normal.

    • table es un nombre de columna que contiene una palabra reservada.

    • 1 es una constante entera.

    • 'mingya.wmy' es una constante de cadena. Incluya el par de comillas simples.

    • 'null' es una cadena.

    • to_char(a + 1) es una expresión de función.

    • 2.3 es un número de punto flotante.

    • true es un valor booleano.

  • columnEspecifique explícitamente un conjunto no vacío de columnas para sincronizar.

Sí

Ninguna

splitFactor

Factor de división que establece la cantidad de fragmentos de datos. Con varias tareas simultáneas, los datos se dividen en concurrency × splitFactor fragmentos. Por ejemplo, si concurrency = 5 y splitFactor = 5, se generan 5 × 5 = 25 fragmentos que se ejecutan en cinco hilos concurrentes.

Nota

Rango recomendado: de 1 a 100. Un valor excesivamente alto puede provocar un error de falta de memoria.

No

5

splitPk

Cuando SQL Server Reader extrae datos, especificar splitPk indica que desea dividir la información por ese campo. La sincronización inicia tareas concurrentes para mejorar la eficiencia.

  • Se recomienda usar la clave principal de la tabla para splitPk, ya que estos valores suelen distribuirse de manera uniforme y reducen la probabilidad de puntos críticos de datos.

  • Actualmente, splitPk solo admite valores enteros, no cadenas, números de punto flotante, fechas u otros tipos. SQL Server Reader reporta un error si especifica un tipo no admitido.

No

Ninguna

where

Condición de filtro. SQL Server Reader construye una sentencia SQL a partir de column, table y las condiciones where especificadas, y extrae los datos con dicha sentencia. Para pruebas, puede indicar limit 10 como condición WHERE. En la práctica, podría sincronizar los datos del día actual estableciendo WHERE en gmt_create > ${bizdate}.

  • Una condición WHERE permite habilitar la sincronización incremental.

  • Si la condición WHERE está vacía, se sincroniza toda la tabla.

No

Ninguna

querySql

Formato:"querysql" : "sentencia de consulta"En algunos escenarios, WHERE no describe el filtro necesario. Utilice querySql para proporcionar código SQL personalizado. Cuando se configura querySql, Data Integration omite las tablas y columnas, y filtra los datos directamente con la consulta. Por ejemplo, puede unir varias tablas con select a,b from table_a join table_b on table_a.id = table_b.id. Al configurar querySql, SQL Server Reader ignora column, table y la condición where.

No

Ninguna

fetchSize

Cantidad de registros recuperados en cada lote por el complemento y el servidor de base de datos. Determina el número de interacciones de red con Data Integration y mejora el rendimiento de extracción.

Nota

fetchSizeUn valor excesivamente alto (> 2,048) puede provocar un error de falta de memoria (OOM) durante la sincronización.

No

1024

driverVersion

Versión del controlador de SQL Server. El valor predeterminado es 4.0. Puede especificar la versión 12.10, que admite la autenticación de entidad de servicio de Active Directory.

No

4.0

  • SQL Server Reader combina la información configurada de table, column y where en una sentencia SQL, y la envía a SQL Server.

  • SQL Server Reader integra la información de querySql configurada. En el caso de querySql, SQL Server Reader la envía directamente a SQL Server.

Script de ejemplo de Writer

{ "type":"job", "version":"2.0",//Version number. "steps":[ { "stepType":"stream", "parameter":{}, "name":"Reader", "category":"reader" }, { "stepType":"sqlserver",//Plug-in name. "parameter":{ "postSql":[],//SQL statements to run after the synchronization task. "datasource":"",//Data source. "column":[//Fields. "id", "name" ], "table":"",//Table name. "preSql":[]//SQL statements to run before the synchronization task. }, "name":"Writer", "category":"writer" } ], "setting":{ "errorLimit":{ "record":"0"//Number of error records. }, "speed":{ "throttle":true,//When throttle is false, mbps is ignored and throughput is unlimited; when true, throughput is limited. "concurrent":1, //Job concurrency. "mbps":"12"//Rate limit. Here, 1 mbps = 1 MB/s. } }, "order":{ "hops":[ { "from":"Reader", "to":"Writer" } ] } }

Parámetros del script de Writer

Parámetro

Descripción

Obligatorio

Valor predeterminado

datasource

Nombre del origen de datos. En el modo script, puede agregar un origen de datos. El valor debe coincidir con el nombre del origen agregado.

Sí

Ninguna

table

Nombre de la tabla que se va a sincronizar.

Sí

Ninguna

column

Campos de la tabla de destino que se van a escribir, separados por comas. Ejemplo:"column":["id","name","age"]. Para escribir todas las columnas en orden, utilice *, por ejemplo, "column":["*"].

Sí

Ninguna

preSql

Sentencias SQL que se ejecutarán antes de la tarea de sincronización. El modo asistente permite una sola sentencia; el modo script admite varias, por ejemplo, para limpiar datos antiguos.

No

Ninguna

postSql

Sentencias SQL que se ejecutarán después de la tarea de sincronización. El modo asistente permite una sola sentencia; el modo script admite varias, por ejemplo, para agregar una marca de tiempo.

No

Ninguna

writeMode

Elija un modo de importación. Opción compatible: insert. Si ocurre un conflicto de clave principal o índice único, Data Integration trata la fila como datos erróneos y conserva la fila original.

No

insert

batchSize

Cantidad de registros enviados en un solo lote. Reduce considerablemente las interacciones de red entre Data Integration y SQL Server, y mejora el rendimiento. Un valor excesivamente alto puede provocar un error de falta de memoria (OOM) durante la sincronización.

No

1,024

driverVersion

Versión del controlador de SQL Server. El valor predeterminado es 4.0. Puede especificar la versión 12.10, que admite la autenticación de entidad de servicio de Active Directory.

No

4.0