Todos os produtos
Search
Central de documentação

DataWorks:Fonte de dados do SQL Server

Última atualização: Oct 09, 2026

A source de dados do SQL Server permite ler e gravar dados no SQL Server por meio de um canal bidirecional. Este tópico descreve os recursos de sincronização de dados do SQL Server compatíveis com o dataworks.

Versões compatíveis

O SQL Server Reader usa o driver com.microsoft.sqlserver sqljdbc4 4.0. Para consultar os recursos do driver, consulte a documentação oficial. O driver é compatível com as seguintes versões do SQL Server:

Versão

Compatível (sim/não)

SQL Server 2016

Sim

SQL Server 2014

Sim

SQL Server 2012

Sim

PDW 2008R2 AU34

Sim

SQL Server 2008 R2

Sim

SQL Server 2008

Sim

SQL Server 2019

Não

SQL Server 2018

Não

Azure SQL Managed Instance

Não

Azure Synapse Analytics

Não

Azure SQL Database

Sim

Limites

A sincronização em lote pode ler views.

Tipos de campo compatíveis

Para a lista completa de tipos de campo do SQL Server, consulte a documentação do SQL Server. A tabela a seguir usa o SQL Server 2016 como exemplo para mostrar os tipos comuns e a compatibilidade de cada um.

Tipo de campo do SQL Server 2016

SQL Server Reader

SQL Server Writer

bigint

Compatível

Compatível

bit

Compatível

Compatível

decimal

Compatível

Compatível

int

Compatível

Compatível

money

Compatível

Compatível

numeric

Compatível

Compatível

smallint

Compatível

Compatível

smallmoney

Compatível

Compatível

tinyint

Compatível

Compatível

float

Compatível

Compatível

real

Compatível

Compatível

date

Compatível

Compatível

datetime2

Compatível

Compatível

datetime

Compatível

Compatível

datetimeoffset

Não compatível

Não compatível

smalldatetime

Compatível

Compatível

time

Compatível

Compatível

char

Compatível

Compatível

text

Compatível

Compatível

varchar

Compatível

Compatível

nchar

Compatível

Compatível

ntext

Compatível

Compatível

nvarchar

Compatível

Compatível

binary

Compatível

Compatível

image

Compatível

Compatível

varbinary

Compatível

Compatível

cursor

Não compatível

Não compatível

hierarchyid

Não compatível

Não compatível

sql_variant

Compatível

Compatível

Spatial Geometry Types

Não compatível

Não compatível

table

Não compatível

Não compatível

rowversion

Não compatível

Não compatível

uniqueidentifier

Compatível

Compatível

xml

Compatível

Compatível

Spatial Geography Types

Não compatível

Não compatível

A tabela a seguir lista os mapeamentos de tipos do SQL Server para o SQL Server Reader e o SQL Server Writer.

Categoria de tipo

Tipo de dados do SQL Server

Integer

BIGINT, INT, SMALLINT e TINYINT

Floating-point

FLOAT, DECIMAL, REAL e NUMERIC

String

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

Date and time

DATE, DATETIME e TIME

Boolean

BIT

Binary

BINARY, VARBINARY, VARBINARY (MAX) e TIMESTAMP

Adicionar uma fonte de dados

Antes de desenvolver uma tarefa de sincronização no DataWorks, adicione a fonte de dados necessária ao DataWorks seguindo as instruções em Data source configuration. Visualize as descrições dos parâmetros no console do DataWorks para entender o significado deles ao adicionar uma fonte de dados.

Desenvolver tarefas de sincronização de dados

Para informações sobre o ponto de entrada e o procedimento para configurar uma tarefa de sincronização, consulte os guias a seguir.

Configure uma tarefa de sincronização em lote de tabela única

Configure uma tarefa de sincronização de leitura em lote de banco de dados completo

visualize o procedimento, consulte Configure real-time full-database synchronization tasks.

Perguntas frequentes

  • Recuperação de dados em uma configuração de primária e réplica

    Em uma configuração de recuperação de desastres com primária e réplica, a réplica recupera dados continuamente da primária por meio de binlogs. A replicação pode apresentar atrasos, especialmente devido à latência de rede. Portanto, os dados da réplica podem diferir significativamente da primária, e os dados sincronizados a partir da réplica podem não ser um snapshot completo no momento atual.

  • Restrições de consistência

    O SQL Server é um RDBMS e fornece interfaces de consulta com consistência forte. Por exemplo, se outro writer atualizar o banco de dados após o início de uma tarefa de sincronização, o SQL Server Reader não capturará esses dados atualizados por causa do comportamento de snapshot do banco de dados.

    Isso se aplica à consistência no modelo de thread única do SQL Server Reader. Como o SQL Server Reader pode extrair dados simultaneamente com base na sua configuração, nem sempre há garantia de consistência estrita.

    Quando o SQL Server Reader divide os dados por splitPk, ele inicia várias tarefas simultâneas. Essas tarefas não compartilham uma única transação de leitura e começam em momentos diferentes, portanto, os dados resultantes não formam um snapshot completo e consistente.

    Atualmente, não é tecnicamente viável obter um snapshot consistente em várias threads. As abordagens de engenharia a seguir têm prós e contras; escolha a mais adequada às suas necessidades.

    • Use sincronização de thread única sem dividir os dados. Ela é mais lenta, mas oferece boa consistência.

    • Suspenda outros writers para que os dados permaneçam estáticos, por exemplo, bloqueando a tabela ou não ative a sincronização da réplica. Isso pode afetar os negócios online.

  • Codificação do banco de dados

    O SQL Server Reader usa JDBC para extrair dados. O JDBC lida com diferentes codificações e as converte internamente, portanto, você não precisa especificar a codificação para o SQL Server Reader.

  • Sincronização incremental de dados

    O SQL Server Reader extrai dados com instruções SELECT JDBC. modifique a consulta e Use SELECT…WHERE… para extração incremental das seguintes formas:

    • Quando um aplicativo online grava dados, ele preenche o campo modify com o timestamp da alteração para inserções, atualizações e exclusões lógicas. O SQL Server Reader pode usar uma condição WHERE após o timestamp da sincronização anterior.

    • Para registros append-only (somente anexação), defina uma condição WHERE com base no maior ID de incremento automático do estágio anterior.

    Se nenhum campo de negócios identificar os registros inseridos ou modificados, o SQL Server Reader não poderá sincronizar incrementalmente e deverá sincronizar todos os dados.

  • Segurança do SQL

    O SQL Server Reader fornece querySql para que você possa escrever uma consulta de extração SELECT, mas não valida querySql quanto à segurança.

Apêndice: Scripts e parâmetros de exemplo

Configure uma tarefa de sincronização em lote usando o editor de código

Para configurar uma tarefa de sincronização em lote usando o editor de código, configure os parâmetros relacionados no script com base nos requisitos de formato unificado de script. Para mais informações, consulte Script mode configuration. As informações a seguir descrevem os parâmetros que você deve configurar para as fontes de dados ao configurar uma tarefa de sincronização em lote pelo editor de código.

Script de exemplo do 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 fazer consultas com querySql, use um script do Reader como o seguinte. Aqui, a fonte de dados do SQL Server é sql_server_source, a tabela é dbo.test_table e a coluna é 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 do script do Reader

Parâmetro

Descrição

Obrigatório

Valor padrão

datasource

Nome da fonte de dados. No modo de script, você pode adicionar uma fonte de dados. O valor deve corresponder ao nome da fonte de dados adicionada.

Sim

Nenhum

table

Nome da tabela a ser sincronizada. Uma tarefa suporta apenas uma tabela.

Sim

Nenhum

column

Colunas a serem sincronizadas da tabela configurada, descritas como um array JSON. Por padrão, todas as colunas são selecionadas, como [ * ].

  • selecione apenas algumas colunas para exportação.

  • Reordene as colunas para exportação em vez de seguir o esquema da tabela.

  • Configure constantes de acordo com a sintaxe SQL do MySQL, por exemplo, ["id", "table","1", "'mingya.wmy'", "'null'", "to_char(a+1)", "2,3" , "true"] .

    • id é um nome de coluna comum.

    • table é um nome de coluna que contém uma palavra reservada.

    • 1 é uma constante inteira.

    • 'mingya.wmy' é uma constante de string. Inclua o par de aspas simples.

    • 'null' é uma string.

    • to_char(a + 1) é uma expressão de função.

    • 2,3 é um número de ponto flutuante.

    • true é um valor booleano.

  • column Especifique explicitamente um conjunto não vazio de colunas a serem sincronizadas.

Sim

Nenhum

splitFactor

Um fator de divisão que define o número de shards de dados. Com várias tarefas simultâneas, os dados são divididos em concurrency × splitFactor shards. Por exemplo, concurrency = 5 e splitFactor = 5 produzem 5 × 5 = 25 shards, executados em cinco threads simultâneas.

Nota

Faixa recomendada: 1 a 100. Um valor muito grande pode causar erro de falta de memória (OOM).

Não

5

splitPk

Quando o SQL Server Reader extrai dados, ao especificar splitPk, você indica que deseja dividir os dados pelo campo splitPk. A sincronização inicia tarefas simultâneas para melhorar a eficiência.

  • Recomendamos usar a chave primária da tabela para splitPk, pois os valores de chave primária geralmente são distribuídos uniformemente, reduzindo a chance de hotspots de dados.

  • O splitPk atualmente é compatível apenas com valores inteiros, não com strings, números de ponto flutuante, datas ou outros tipos. O SQL Server Reader retorna um erro se você especificar um tipo não compatível.

Não

Nenhum

where

Uma condição de filtro. O SQL Server Reader monta uma instrução SQL a partir das condições column, table e where especificadas e extrai dados com essa instrução. Para testes, especifique limit 10 como condição WHERE. Na prática, sincronize os dados do dia atual definindo WHERE como gmt_create > ${bizdate}.

  • Uma condição WHERE permite a sincronização incremental.

  • Uma condição WHERE vazia sincroniza a tabela inteira.

Não

Nenhum

querySql

Formato:"querysql" : "query statement". Em alguns cenários, o WHERE não pode descrever o filtro necessário. Use querySql para fornecer SQL personalizado. Quando o querySql é configurado, o Data Integration ignora tabelas e colunas e filtra os dados diretamente com a consulta, por exemplo, unindo várias tabelas com select a,b from table_a join table_b on table_a.id = table_b.id. Ao configurar querySql, o SQL Server Reader ignora as condições column, table e where.

Não

Nenhum

fetchSize

O número de registros recuperados em cada lote pelo plug-in e pelo servidor de banco de dados. Determina o número de interações de rede com o Data Integration e pode melhorar o desempenho de extração.

Nota

fetchSize Um valor muito grande (> 2.048) pode causar erro de falta de memória (OOM) durante a sincronização.

Não

1024

driverVersion

A versão do driver do SQL Server. O padrão é 4.0. Especifique a versão 12.10, que suporta a autenticação Active Directory Service Principal.

Não

4.0

  • O SQL Server Reader monta as informações configuradas de table e column e where em uma instrução SQL e as envia para o SQL Server.

  • O SQL Server Reader monta as informações configuradas de querySql em uma instrução SQL e as envia para o SQL Server.

Script de exemplo do 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 do script do Writer

Parâmetro

Descrição

Obrigatório

Valor padrão

datasource

Nome da fonte de dados. No modo de script, você pode adicionar uma fonte de dados. O valor deve corresponder ao nome da fonte de dados adicionada.

Sim

Nenhum

table

Nome da tabela a ser sincronizada.

Sim

Nenhum

column

Campos da tabela de destino a serem gravados, separados por vírgulas. Exemplo:"column":["id","name","age"]. Para gravar todas as colunas em ordem, use *, por exemplo, "column":["*"].

Sim

Nenhum

preSql

Execute instruções SQL antes da tarefa de sincronização. O modo de assistente permite apenas uma instrução; o modo de script suporta várias instruções, como limpar dados antigos.

Não

Nenhum

postSql

Execute instruções SQL após a tarefa de sincronização. O modo de assistente permite apenas uma instrução; o modo de script suporta várias instruções, como adicionar um timestamp.

Não

Nenhum

writeMode

Escolha um modo de importação. Compatível com: insert. Se ocorrer um conflito de chave primária ou índice único, o Data Integration trata a linha como dado incorreto (dirty data) e retém a linha original.

Não

insert

batchSize

O número de registros enviados em um único lote. Isso reduz bastante as interações de rede entre o Data Integration e o SQL Server e melhora o throughput. Um valor muito grande pode causar erro de falta de memória (OOM) durante a sincronização.

Não

1.024

driverVersion

A versão do driver do SQL Server. O padrão é 4.0. Especifique a versão 12.10, que suporta a autenticação Active Directory Service Principal.

Não

4.0