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
Para conocer el procedimiento, consulte Codeless UI configuration y Script mode configuration.
Para ver todos los parámetros del modo script y los scripts de ejemplo, consulte Appendix: Sample scripts and parameters.
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, [ * ].
| 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 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
| No | Ninguna |
where | Condición de filtro. SQL Server Reader construye una sentencia SQL a partir de
| No | Ninguna |
querySql | Formato: | 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
| 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,columnywhereen una sentencia SQL, y la envía a SQL Server.SQL Server Reader integra la información de
querySqlconfigurada. 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: |
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: |
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 |