Todos os produtos
Search
Central de documentação

DataWorks:Fonte de dados SQL Server

Última atualização: Jun 27, 2026

A fonte de dados SQL Server oferece um canal bidirecional para leitura e gravação em bancos de dados SQL Server. Este tópico descreve as capacidades de sincronização de dados do SQL Server suportadas pelo DataWorks.

Versões suportadas

O SQL Server Reader utiliza o driver com.microsoft.sqlserver sqljdbc4 4.0. Para detalhes sobre o driver, consulte a documentação oficial. As versões do SQL Server suportadas por este driver estão listadas abaixo:

Versão

Suportado (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

Limitação

A sincronização em lote suporta leitura a partir de views.

Tipos de coluna suportados

Para obter a lista completa de tipos de coluna do SQL Server, consulte a documentação do SQL Server. A tabela a seguir, usando o SQL Server 2016 como exemplo, lista o suporte para tipos de coluna comuns.

Tipo de coluna do SQL Server 2016

SQL Server Reader

SQL Server Writer

bigint

Suportado

Suportado

bit

Suportado

Suportado

decimal

Suportado

Suportado

int

Suportado

Suportado

money

Suportado

Suportado

numeric

Suportado

Suportado

smallint

Suportado

Suportado

smallmoney

Suportado

Suportado

tinyint

Suportado

Suportado

float

Suportado

Suportado

real

Suportado

Suportado

date

Suportado

Suportado

datetime2

Suportado

Suportado

datetime

Suportado

Suportado

datetimeoffset

Não suportado

Não suportado

smalldatetime

Suportado

Suportado

time

Suportado

Suportado

char

Suportado

Suportado

text

Suportado

Suportado

varchar

Suportado

Suportado

nchar

Suportado

Suportado

ntext

Suportado

Suportado

nvarchar

Suportado

Suportado

binary

Suportado

Suportado

image

Suportado

Suportado

varbinary

Suportado

Suportado

cursor

Não suportado

Não suportado

hierarchyid

Não suportado

Não suportado

sql_variant

Suportado

Suportado

Spatial Geometry Types

Não suportado

Não suportado

table

Não suportado

Não suportado

rowversion

Não suportado

Não suportado

uniqueidentifier

Suportado

Suportado

xml

Suportado

Suportado

Spatial Geography Types

Não suportado

Não suportado

A tabela a seguir lista as conversões de tipos de coluna realizadas pelo SQL Server Reader e pelo SQL Server Writer para o SQL Server.

Categoria

Tipo de dados do SQL Server

Inteiro

BIGINT, INT, SMALLINT e TINYINT

Ponto flutuante

FLOAT, DECIMAL, REAL e NUMERIC

String

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

Data e hora

DATE, DATETIME e TIME

Booleano

BIT

Binário

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 Gerenciamento de fontes de dados. Consulte as descrições de parâmetros no console do DataWorks para entender o significado dos parâmetros ao adicionar uma fonte de dados.

Desenvolver uma tarefa de sincronização de dados

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

Guia de configuração de tarefa de sincronização em lote de tabela única

Guia de configuração de tarefa de sincronização de leitura em lote de banco de dados inteiro

Para o procedimento, consulte Configure sincronização completa de banco de dados em tempo real.

Perguntas frequentes

  • Recuperação de dados de sincronização primária-secundária

    A sincronização primária-secundária refere-se a uma configuração em que o SQL Server utiliza recuperação de desastres primária-secundária, e o banco de dados secundário recupera continuamente dados do banco de dados primário via binlog. Como há um atraso na sincronização de dados entre primário e secundário, especialmente sob condições como latência de rede, os dados recuperados no secundário podem diferir significativamente do primário. Consequentemente, os dados sincronizados a partir do secundário não representam um snapshot completo no momento atual.

  • Restrições de consistência

    O SQL Server pertence à categoria RDBMS e pode fornecer interfaces de consulta de dados fortemente consistentes. Por exemplo, enquanto uma tarefa de sincronização está em execução, se outros writers estiverem gravando no banco de dados, o SQL Server Reader não visualizará os dados recém-gravados ou atualizados, graças ao recurso de snapshot do banco de dados.

    O texto acima descreve o comportamento de consistência de dados do SQL Server Reader no modo single-threaded. O SQL Server Reader pode realizar extração de dados concorrente com base na sua configuração, portanto, a consistência estrita de dados não pode ser garantida.

    Quando o SQL Server Reader divide os dados com base no splitPk, ele inicia várias tarefas concorrentes para realizar a sincronização. Essas tarefas concorrentes não pertencem à mesma transação de leitura e existem intervalos de tempo entre elas. Portanto, os dados extraídos não constituem um snapshot completo e consistente.

    Tecnicamente, não é possível obter um snapshot consistente com multithreading; isso deve ser tratado do ponto de vista de engenharia. Abordagens de engenharia envolvem compensações. As opções a seguir são fornecidas e você pode escolha com base na sua situação.

    • Utilize sincronização single-threaded sem fragmentação de dados. A desvantagem é a velocidade mais lenta, mas garante a consistência.

    • Interrompa outros writers para que os dados atuais fiquem estáticos — por exemplo, bloqueando a tabela ou parando a sincronização secundária. A desvantagem é o possível impacto nos negócios online.

  • Codificação do banco de dados

    O SQL Server Reader usa JDBC para extração de dados. O JDBC se adapta nativamente a várias codificações e realiza a conversão de codificação no nível subjacente. Portanto, o SQL Server Reader não exige que você especifique a codificação — ele pode detectar e converter automaticamente.

  • Métodos de sincronização incremental de dados

    O SQL Server Reader usa instruções JDBC SELECT para extrair dados, então você pode usar SELECT…WHERE… para extração incremental de dados, da seguinte forma:

    • Quando uma aplicação online grava no banco de dados (incluindo inserções, atualizações e exclusões lógicas), ela preenche uma coluna de modificação com o timestamp da alteração. Para tais aplicações, o SQL Server Reader precisa apenas anexar o timestamp da sincronização anterior à cláusula WHERE.

    • Para dados de streaming apenas de adição (append-only), o SQL Server Reader precisa apenas anexar o ID autoincremental máximo da execução anterior à cláusula WHERE.

    Se não houver uma coluna de negócio para distinguir registros recém-inseridos ou atualizados, o SQL Server Reader não poderá realizar sincronização incremental e só poderá sincronizar o conjunto completo de dados.

  • Segurança de SQL

    O SQL Server Reader fornece o parâmetro querySql para permitir que você implemente instruções de extração SELECT personalizadas. O SQL Server Reader não realiza nenhuma validação de segurança no querySql.

Apêndice: Demonstração de script e descrições de parâmetros

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

Se desejar configure uma tarefa de sincronização em lote usando o editor de código, configure os parâmetros relacionados no script de acordo com os requisitos unificados de formato de script. Para mais informações, consulte Configuração em modo script. As informações a seguir descrevem os parâmetros que devem ser configurados para fontes de dados ao utilizar o editor de código para tarefas de sincronização em lote.

Exemplo de script do 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"
            }
        ]
    }
}

Caso queira usar querySql, o seguinte exemplo de código de script do Reader pode ser utilizado (a fonte de dados SQL Server é sql_server_source, a tabela de destino é dbo.test_table e a coluna de destino é 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. O modo script suporta a adição de fontes de dados. O valor aqui deve corresponder ao nome da fonte de dados adicionada.

Sim

Nenhum

table

Nome da tabela a ser sincronizada. Um único job pode sincronizar apenas uma tabela.

Sim

Nenhum

column

Conjunto de colunas a serem sincronizadas da tabela configurada, descrito como um array JSON. Por padrão, todas as colunas são usadas, por exemplo [ * ].

  • Há suporte para seleção de colunas. Ou seja, é possível exportar apenas algumas colunas.

  • A reordenação de colunas é suportada. Isto é, as colunas não precisam ser exportadas na ordem do schema da tabela.

  • Constantes são aceitas. Elas devem seguir 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 string (observe as aspas simples obrigatórias).

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

  • O parâmetro column deve especificar explicitamente as colunas a serem sincronizadas e não pode estar vazio.

Sim

Nenhum

splitFactor

Fator de divisão. Permite configure em quantos shards os dados sincronizados serão divididos. Se a concorrência for configurada, os dados serão divididos em concurrency × splitFactor shards. Por exemplo, se concurrency = 5 e splitFactor = 5, os dados serão divididos em 5 × 5 = 25 shards executados em 5 threads concorrentes.

Nota

Faixa recomendada: 1 a 100. Valores muito altos podem causar erros de falta de memória.

Não

5

splitPk

Ao extrair dados, especifique splitPk no SQL Server Reader indica o uso da coluna representada por splitPk para dividir os dados. O sistema de sincronização de dados então inicia tarefas concorrentes para melhorar a eficiência da sincronização.

  • Recomenda-se usar a chave primária da tabela como splitPk, pois chaves primárias geralmente são distribuídas uniformemente, tornando os shards resultantes menos propensos a hotspots.

  • Atualmente, o splitPk suporta apenas colunas inteiras para divisão; strings, ponto flutuante, data e outros tipos não são suportados. Se você especifique um tipo não suportado, o SQL Server Reader retornará um erro.

Não

Nenhum

where

Condição de filtro. O SQL Server Reader constrói uma instrução SQL usando column, table e where especificados, e extrai dados usando essa instrução SQL. Por exemplo, durante testes, defina where como limit 10. Em cenários reais de negócios, normalmente sincronizam-se os dados do dia atual, definindo where como gmt_create > ${bizdate}.

  • A condição where permite uma sincronização incremental eficaz dos dados de negócio.

  • Se where estiver vazio, a tabela inteira será sincronizada.

Não

Nenhum

querySql

Formato: "querysql" : "query statement". Em alguns cenários de negócios, o parâmetro where sozinho não consegue expressar as condições de filtro, então utilize este parâmetro para definir uma instrução SELECT personalizada. Quando este parâmetro é configurado, o sistema de sincronização de dados ignora os parâmetros de tabelas e colunas e usa diretamente este valor para filtrar dados. Por exemplo, para sincronizar dados após juntar várias tabelas, use select a,b from table_a join table_b on table_a.id = table_b.id. Ao configure querySql, o SQL Server Reader ignora as configurações de column, table e where.

Não

Nenhum

fetchSize

Este parâmetro define o número de linhas que o plugin busca do servidor de banco de dados em cada lote. Ele determina o número de idas e vindas na rede entre o Data Integration e o servidor, podendo melhorar o desempenho da extração.

Nota

Se fetchSize for muito grande (> 2048), o processo de sincronização pode ficar sem memória (OOM).

Não

1024

driverVersion

Versão do driver do SQL Server. O padrão é 4,0. É possível especifique a versão 12.10, que suporta autenticação Active Directory Service Principal.

Não

4,0

  • Para os valores de table, column e where configurados, o SQL Server Reader os monta em uma instrução SQL e a envia ao banco de dados SQL Server.

  • Quanto ao valor de querySql configurado, o SQL Server Reader o envia diretamente ao banco de dados SQL Server.

Exemplo de script do 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"
            }
        ]
    }
}

Parâmetros do script do Writer

Parâmetro

Descrição

Obrigatório

Valor padrão

datasource

Nome da fonte de dados. O modo script suporta a adição de fontes de dados. O valor aqui deve corresponder ao nome da fonte de dados adicionada.

Sim

Nenhum

table

Nome da tabela a ser sincronizada.

Sim

Nenhum

column

Colunas da tabela de destino onde os dados serão gravados, separadas por vírgulas. Por exemplo, "column":["id","name","age"]. Para gravar em todas as colunas em ordem, use *, por exemplo "column":["*"].

Sim

Nenhum

preSql

Instruções SQL a serem executadas antes do início da tarefa de sincronização de dados. No modo assistente, apenas uma instrução SQL é permitida; no modo script, múltiplas instruções são suportadas, por exemplo, para limpar dados antigos.

Não

Nenhum

postSql

Instruções SQL a serem executadas após a conclusão da tarefa de sincronização de dados. No modo assistente, apenas uma instrução SQL é permitida; no modo script, múltiplas instruções são suportadas, por exemplo, para adicionar um timestamp.

Não

Nenhum

writeMode

Modo de importação. O modo insert é suportado. Quando ocorre um conflito de chave primária ou índice único, o Data Integration trata o registro como dado incorreto, mas retém os dados originais.

Não

insert

batchSize

Número de registros confirmados em um único lote. Este valor pode reduzir significativamente o número de idas e vindas na rede entre o sistema de sincronização de dados e o SQL Server, melhorando o throughput geral. Se o valor for muito alto, o processo de sincronização pode ficar sem memória (OOM).

Não

1.024

driverVersion

Versão do driver do SQL Server. O padrão é 4,0. É possível especifique a versão 12.10, que suporta autenticação Active Directory Service Principal.

Não

4,0