Todos os produtos
Search
Central de documentação

Data Transmission Service:Sincronização de dados entre instâncias do RDS for SQL Server

Última atualização: Aug 27, 2026

Use o DTS para sincronizar dados entre instâncias do ApsaraDB RDS for SQL Server.

Pré-requisitos

  • Crie as instâncias de origem e de destino do ApsaraDB RDS for SQL Server. Para verificar as versões compatíveis, consulte Synchronization solution overview. Para criar uma instância, consulte Create an ApsaraDB RDS for SQL Server instance.

    Importante

    O modo de análise híbrida baseada em logs (quando o parâmetro SQL Server Incremental Synchronization Mode está definido como Log-based Parsing for Non-heap Tables and CDC-based Incremental Synchronization for Heap Tables) oferece suporte às seguintes versões e edições do banco de dados de origem:

    • Edição Enterprise ou Enterprise Evaluation: 2012, 2014, 2016, 2019, 2022 ou 2025.

    • Edição Standard: 2016, 2019, 2022 ou 2025.

  • A instância de destino do ApsaraDB RDS for SQL Server deve ter mais espaço de armazenamento que a instância de origem do ApsaraDB RDS for SQL Server.

  • Ao sincronizar dados de um SQL Server autogerenciado para uma instância do ApsaraDB RDS for SQL Server, recomendamos usar o recurso de backup de banco de dados do ApsaraDB RDS for SQL Server se alguma das condições a seguir se aplicar. Para mais informações, consulte Migrar dados de um banco de dados autogerenciado para uma instância do ApsaraDB RDS for SQL Server.

    • A instância de origem tem mais de 10 bancos de dados.

    • Backups de log ocorrem mais de uma vez por hora para um único banco de dados.

    • Mais de 100 operações de Linguagem de Definição de Dados (DDL) são executadas por hora em um único banco de dados.

    • A taxa de geração de logs para um único banco de dados excede 20 MB/s.

    • É necessário ativar o Change Data Capture (CDC) em mais de 1.000 tabelas.

    • O banco de dados de origem contém tabelas heap, tabelas sem chave primária, tabelas compactadas, tabelas com colunas computadas ou tabelas com colunas esparsas. Execute as instruções SQL a seguir para verificar a existência desses tipos de tabela no banco de dados de origem:

      1. Verifique tabelas heap no banco de dados de origem:

        SELECT s.name AS schema_name, t.name AS table_name FROM sys.schemas s INNER JOIN sys.tables t ON s.schema_id = t.schema_id AND t.type = 'U' AND s.name NOT IN ('cdc', 'sys') AND t.name NOT IN ('systranschemas') AND t.object_id IN (SELECT object_id FROM sys.indexes WHERE index_id = 0);
      2. Verifique tabelas sem chave primária:

        SELECT s.name AS schema_name, t.name AS table_name FROM sys.schemas s INNER JOIN sys.tables t ON s.schema_id = t.schema_id AND t.type = 'U' AND s.name NOT IN ('cdc', 'sys') AND t.name NOT IN ('systranschemas') AND t.object_id NOT IN (SELECT parent_object_id FROM sys.objects WHERE type = 'PK');
      3. Verifique colunas de chave primária não incluídas no índice clusterizado:

        SELECT s.name schema_name, t.name table_name FROM sys.schemas s INNER JOIN sys.tables t ON s.schema_id = t.schema_id WHERE t.type = 'U' AND s.name NOT IN('cdc', 'sys') AND t.name NOT IN('systranschemas') AND t.object_id IN ( SELECT pk_colums_counter.object_id AS object_id FROM (select pk_colums.object_id, sum(pk_colums.column_id) column_id_counter from (select sic.object_id object_id, sic.column_id FROM sys.index_columns sic, sys.indexes sis WHERE sic.object_id = sis.object_id AND sic.index_id = sis.index_id AND sis.is_primary_key = 'true') pk_colums group by object_id) pk_colums_counter inner JOIN ( select cluster_colums.object_id, sum(cluster_colums.column_id) column_id_counter from (SELECT sic.object_id object_id, sic.column_id FROM sys.index_columns sic, sys.indexes sis WHERE sic.object_id = sis.object_id AND sic.index_id = sis.index_id AND sis.index_id = 1) cluster_colums group by object_id ) cluster_colums_counter ON pk_colums_counter.object_id = cluster_colums_counter.object_id and pk_colums_counter.column_id_counter != cluster_colums_counter.column_id_counter);
      4. Verifique tabelas compactadas no banco de dados de origem:

        SELECT s.name AS schema_name, t.name AS table_name FROM sys.objects t, sys.schemas s, sys.partitions p WHERE s.schema_id = t.schema_id AND t.type = 'U' AND s.name NOT IN ('cdc', 'sys') AND t.name NOT IN ('systranschemas') AND t.object_id = p.object_id AND p.data_compression != 0;
      5. Verifique tabelas que contêm colunas computadas:

        SELECT s.name AS schema_name, t.name AS table_name FROM sys.schemas s INNER JOIN sys.tables t ON s.schema_id = t.schema_id AND t.type = 'U' AND s.name NOT IN ('cdc', 'sys') AND t.name NOT IN ('systranschemas') AND t.object_id IN (SELECT object_id FROM sys.columns WHERE is_computed = 1);
      6. Verifique tabelas que contêm colunas esparsas:

        SELECT s.name AS schema_name, t.name AS table_name FROM sys.schemas s INNER JOIN sys.tables t ON s.schema_id = t.schema_id AND t.type = 'U' AND s.name NOT IN ('cdc', 'sys') AND t.name NOT IN ('systranschemas') AND t.object_id IN (SELECT object_id FROM sys.columns WHERE is_sparse = 1);

Observações de uso

Nota

O DTS não sincroniza chaves estrangeiras do banco de dados de origem para o banco de dados de destino. Consequentemente, operações em cascata e de exclusão no banco de dados de origem não são replicadas no destino.

Tipo

Descrição

Limitações do banco de dados de origem

  • As tabelas selecionadas para sincronização devem possuir chave primária ou restrição única. Caso contrário, podem ocorrer dados duplicados no banco de dados de destino.

  • Se uma tarefa de sincronização envolver mais de 5.000 tabelas no nível de tabela e exigir edição de objetos, como mapeamento de nomes de colunas, divida as tabelas em várias tarefas.

  • Uma única tarefa de sincronização suporta no máximo 10 bancos de dados. Exceder esse limite pode causar problemas de estabilidade e desempenho. Nesse caso, distribua as tabelas em múltiplas tarefas.

  • Não há suporte para sincronização de tabelas otimizadas para memória.

  • Ao configurar uma tarefa para sincronizar objetos específicos em vez de todo o banco de dados, não é possível sincronizar objetos com o mesmo nome de tabela, mas esquemas diferentes, para o mesmo banco de dados de destino dentro dessa tarefa.

  • O Data Transmission Service (DTS) usa a função fn_log para obter logs do banco de dados de origem. Essa função apresenta gargalos de desempenho. Não limpe os logs do banco de dados de origem prematuramente, pois isso pode causar falha na tarefa.

  • Logs de transação:

    • Ative os logs de transação, defina o modelo de recuperação como Full e garanta a conclusão de um backup físico completo.

    • Para tarefas de sincronização incremental, o DTS exige que os logs de transação sejam retidos por pelo menos 24 horas. Em tarefas que incluem sincronização completa e incremental, a retenção deve ser de no mínimo 7 dias. Após a conclusão da sincronização completa, altere o período de retenção para 24 horas ou mais. Se o DTS não conseguir acessar os logs devido a um período de retenção insuficiente, a tarefa poderá falhar. Em casos extremos, isso pode levar à inconsistência ou perda de dados. Problemas decorrentes de retenção de logs inferior ao exigido pelo DTS não são cobertos pelo acordo de nível de service (SLA).

  • Para ativar o Change Data Capture (CDC) nas tabelas do banco de dados de origem, cumpra as condições abaixo. Caso contrário, a pré-verificação falhará.

    • O valor do campo srvname na view sys.sysservers deve ser idêntico ao valor retornado pela função SERVERPROPERTY.

    • Se o banco de dados de origem for um SQL Server autogerenciado, o proprietário do banco deve ser sa. Se for uma instância do ApsaraDB RDS for SQL Server, o proprietário deve ser sqlsa.

    • Para bancos de dados Enterprise Edition, a versão deve ser SQL Server 2008 ou superior.

    • Para bancos de dados Standard Edition, a versão deve ser SQL Server 2016 SP1 ou superior.

    • Se o banco de dados de origem for SQL Server 2017 (Standard ou Enterprise Edition), atualize-o para uma versão posterior.

  • Operações DDL não são sincronizadas se o banco de dados de origem for uma instância somente leitura.

  • Quando o banco de dados de origem é um Azure SQL Database, cada instância de sincronização pode replicar dados de apenas um banco de dados.

  • Desative o recurso Transparent Data Encryption (TDE) se o banco de dados de origem for uma instância do ApsaraDB RDS for SQL Server, garantindo assim a estabilidade da sincronização. Para mais detalhes, consulte Disable TDE.

  • O uso do comando sp_rename para alterar nomes de objetos, como stored procedures, antes da execução da tarefa de sincronização de esquema pode resultar em falhas ou comportamentos inesperados.

    Nota

    Recomendamos usar o comando ALTER para renomear objetos no banco de dados.

  • No modo de análise híbrida de logs, evite executar múltiplas operações de adição ou remoção de colunas em curto intervalo (menos de 10 minutos). Por exemplo, executar as instruções SQL abaixo consecutivamente causará falha na tarefa.

    ALTER TABLE test_table DROP COLUMN Flag;
    ALTER TABLE test_table ADD Remark nvarchar(50) not null default('');
  • Não execute operações DDL que alterem esquemas de banco de dados ou tabelas durante a sincronização de esquema ou a sincronização completa. Isso provoca falha na tarefa.

    Nota

    Durante a sincronização completa, o DTS consulta o banco de dados de origem, criando bloqueios de metadados que podem impedir operações DDL.

  • Se o banco de dados de origem for uma instância Web Edition do ApsaraDB RDS for SQL Server, selecione Incremental Synchronization Based on Logs of Source Database (Heap tables are not supported) para o SQL Server Incremental Synchronization Mode durante a configuração da tarefa.

  • Mantenha o parâmetro de modo de processamento de transações READ_COMMITTED_SNAPSHOT ativado no banco de dados de origem durante a sincronização completa para evitar que bloqueios compartilhados afetem gravações de dados. A desativação pode causar inconsistência de dados e falhas na instância, situações não cobertas pelo SLA do DTS.

Outras limitações

  • Não há suporte para sincronização dos seguintes tipos de dados: CURSOR, ROWVERSION, SQL_VARIANT, HIERARCHYID, POLYGON, GEOMETRY e GEOGRAPHY.

  • O DTS não suporta sincronização completa ou incremental se não for possível gravar dados em um campo TIMESTAMP no banco de dados de destino, o que pode gerar inconsistência ou falha na tarefa.

  • Verifique previamente a compatibilidade ao sincronizar dados entre versões diferentes de bancos de dados.

  • A conta do banco de dados usada na tarefa precisa ter permissões de Owner no banco de dados de destino para sincronizar triggers.

  • Ao selecionar Incremental Synchronization Based on Logs of Source Database (Heap tables are not supported) para o SQL Server Incremental Synchronization Mode na etapa Configure Objects, as tabelas sincronizadas devem ter um índice clusterizado que inclua as colunas de chave primária. Tabelas heap, sem chave primária, compactadas, com colunas computadas ou com colunas esparsas não são suportadas. Essas restrições não se aplicam ao modo de análise híbrida de logs.

  • Se você escolher Log-based Parsing for Non-heap Tables and CDC-based Incremental Synchronization for Heap Tables (Hybrid Log-based Parsing) para o SQL Server Incremental Synchronization Mode na etapa Configure Objects, as limitações a seguir também se aplicam:

    • A sincronização incremental do DTS depende do componente CDC. Garanta que os jobs de CDC no banco de dados de origem estejam funcionando corretamente para evitar falhas na tarefa.

    • Por padrão, o componente CDC armazena dados incrementais por 3 dias. Use o comando exec console.sys.sp_cdc_change_job @job_type = 'cleanup', @retention= <time>; para ajustar o período de retenção conforme necessário.

      Nota
      • <time> especifica o tempo em minutos.

      • Recomenda-se definir <time> como 1440 se uma única tabela no banco de dados de origem gerar, em média, mais de 10 milhões de instruções SQL de alteração incremental por dia.

    • A pré-verificação do DTS para sincronização incremental ativa o CDC no banco de dados e nas tabelas de origem. Devido a limitações do mecanismo do SQL Server, esse processo pode causar breves bloqueios no banco de dados de origem.

    • Em uma única tarefa de sincronização, ative o CDC em no máximo 1.000 tabelas. Exceder esse limite pode provocar latência ou instabilidade na tarefa.

  • Caso selecione Polling and querying CDC instances for incremental synchronization para o SQL Server Incremental Synchronization Mode na etapa Configure Objects, observe as limitações adicionais:

    • A conta do banco de dados de origem usada pela instância DTS deve ter permissão para ativar o CDC. Uma conta com a função sysadmin é necessária para ativar o CDC no nível do banco de dados. Já para ativar o CDC no nível da tabela, é necessária uma conta com privilégios elevados.

      Nota
      • A conta de maior privilégio (administrador de servidor) fornecida no console do Azure SQL Database atende a esse requisito. Para bancos de dados no modelo de compra baseado em vCore, todas as camadas de service suportam CDC. No modelo baseado em DTU, a camada de service deve ser S3 ou superior para oferecer suporte ao CDC.

      • A conta de altos privilégios do Amazon RDS for SQL Server atende a este requisito e permite ativar o CDC no nível do banco de dados para stored procedures.

      • Não há suporte para CDC em tabelas com índices columnstore clusterizados.

      • A pré-verificação do DTS para sincronização incremental ativa o CDC no banco de dados e nas tabelas de origem. Limitações do mecanismo do SQL Server podem causar breves bloqueios durante esse processo.

    • O DTS consulta a instância CDC de cada tabela no banco de dados de origem para obter dados incrementais. Portanto, sincronize no máximo 1.000 tabelas para evitar latência ou instabilidade na tarefa.

    • Os dados incrementais armazenados pelo componente CDC são retidos por 3 dias por padrão. Recomendamos executar o comando exec console.sys.sp_cdc_change_job @job_type = 'cleanup', @retention= <time>; para definir um período de retenção adequado.

    • Nota
      • <time> especifica o tempo em minutos.

      • Se a média diária de instruções SQL de alteração incremental para uma única tabela exceder 10 milhões, recomenda-se definir <time> como 1440.

    • Não há suporte para a execução consecutiva de operações DDL para adicionar ou remover colunas (mais de duas operações desse tipo em um minuto), o que pode causar falha na tarefa.

    • Não há suporte para modificar a instância CDC no banco de dados de origem, o que pode resultar em falha na tarefa ou perda de dados.

  • Para garantir monitoramento preciso da latência na sincronização incremental, o DTS cria objetos específicos no banco de dados de origem conforme o modo selecionado. No modo de análise de logs, são criados o trigger dts_cdc_sync_ddl, a tabela de heartbeat dts_sync_progress e a tabela de histórico DDL dts_cdc_ddl_history. No modo híbrido, além desses mesmos objetos, o DTS ativa o CDC no nível do banco de dados e em algumas tabelas. A taxa de alteração de dados nas tabelas com CDC ativado não deve exceder 1.000 RPS.

  • Antes de iniciar a sincronização, avalie o desempenho dos bancos de dados de origem e destino e execute a tarefa fora dos horários de pico. A inicialização completa consome recursos de leitura e escrita em ambos os bancos, aumentando a carga.

  • A inicialização completa realiza operações INSERT concorrentes, podendo fragmentar as tabelas no banco de dados de destino. Assim, o espaço ocupado pelas tabelas na instância de destino pode ser maior do que na origem após a inicialização.

  • Durante a sincronização via DTS, não grave dados no banco de dados de destino a partir de nenhuma outra fonte além do próprio DTS. Isso pode causar inconsistência entre origem e destino. Por exemplo, usar o Data Management (DMS) para operações DDL online enquanto outros dados são gravados no destino pode resultar em perda de dados.

  • Evite reconstruir índices durante a sincronização para prevenir falhas na tarefa ou perda de dados.

    Nota

    Não é possível executar operações DDL relacionadas à chave primária em tabelas com CDC ativado.

  • A pré-verificação falhará se o número de tabelas com CDC ativado em uma única tarefa exceder The maximum number of tables for which CDC is enabled that DTS supports..

  • Para gravar mais de 64 KB de dados em um único campo de uma tabela com CDC ativado, ajuste previamente a configuração do banco de dados de origem usando o comando exec sp_configure 'max text repl size', -1;.

    Nota

    Por padrão, um job de CDC processa campos com tamanho máximo de 64 KB.

  • Na sincronização incremental, desative triggers e chaves estrangeiras existentes no banco de dados de destino, caso contrário a tarefa falhará.

  • O recurso Modify Objects to be Synchronized não permite remover bancos de dados da tarefa.

  • Múltiplas instâncias de sincronização que usam o mesmo banco de dados SQL Server como origem possuem módulos independentes de captura de dados incrementais.

  • Em caso de falha na tarefa, a equipe de suporte do DTS tentará restaurá-la em até oito horas, podendo reiniciar a tarefa ou ajustar seus parâmetros.

    Nota

    Apenas parâmetros da tarefa DTS são modificados, não os do banco de dados. Os parâmetros passíveis de ajuste estão listados em Modify instance parameters.

  • O SQL Server é um banco de dados comercial e de código fechado. Devido a características conhecidas ou desconhecidas de seu formato de log, problemas podem surgir durante a captura (CDC) e análise de alterações incrementais pelo DTS. Antes de usar o DTS para sincronização ou migração incremental de uma origem SQL Server em produção, realize testes abrangentes de prova de conceito (POC). Seus testes devem cobrir todos os cenários de alteração de negócios, modificações de esquema e testes de estresse sob carga máxima. Garantir que a lógica de negócios em produção seja idêntica à testada na fase POC é fundamental para a operação estável e eficiente do DTS.

  • Não há suporte para transações parcialmente revertidas na origem durante a sincronização incremental, e elas podem ser perdidas.

Casos especiais

Quando a instância de origem é um ApsaraDB RDS for SQL Server, o DTS cria a conta rdsdt_dtsacct na instância de origem para sincronização de dados. Não exclua essa conta nem altere sua senha enquanto a tarefa estiver em execução, sob risco de falha. Para mais informações, consulte System account descriptions.

Faturamento

Tipo de sincronização

Preço

Sincronização de esquema e sincronização completa de dados

Gratuito.

Sincronização incremental de dados

Pago. Para mais informações, consulte Billing overview.

Topologias de sincronização

  • Sincronização unidirecional um para um

  • Sincronização unidirecional um para muitos

  • Sincronização unidirecional em cascata

  • Sincronização unidirecional muitos para um

Para descrições detalhadas de cada topologia e seus casos de uso, consulte Synchronization topologies.

Operações SQL suportadas

Tipo de operação

Instrução SQL

DML

INSERT, UPDATE e DELETE

Nota

O DTS não sincroniza instruções UPDATE que atualizam apenas um campo grande.

DDL

  • CREATE TABLE

  • ALTER TABLE

    O DTS suporta apenas ADD COLUMN e DROP COLUMN.

  • DROP TABLE

  • CREATE INDEX e DROP INDEX

Nota
  • O DTS não sincroniza operações DDL transacionais. Por exemplo, uma única instrução SQL que adiciona múltiplas colunas ou contém operações DDL e DML simultaneamente pode causar perda de dados.

  • O DTS não sincroniza operações DDL que usam tipos definidos pelo usuário.

  • O DTS não oferece suporte à sincronização de operações Online DDL.

  • O DTS não sincroniza operações DDL que usam palavras-chave reservadas como nomes de atributos.

  • O DTS não sincroniza operações DDL executadas por stored procedures do sistema.

  • O DTS não sincroniza operações TRUNCATE TABLE.

  • O DTS não sincroniza partições ou funções dentro de uma definição de tabela.

Procedimento

  1. Acesse a página da lista de tarefas de sincronização da região de destino. Use um dos dois métodos abaixo:

    Pelo console do DTS

    1. Faça login no console do Data Transmission Service (DTS).

    2. No painel de navegação à esquerda, clique em Data Synchronization.

    3. No canto superior esquerdo da página, selecione a região onde a instância de sincronização está localizada.

    Pelo console do DMS

    Nota

    As operações reais podem variar dependendo do modo e layout do console DMS. Para mais detalhes, consulte Simple mode e Customize the layout and style of the DMS interface.

    1. Faça login no Data Management (DMS).

    2. Na barra de menu superior, escolha Data + AI > Data Transmission (DTS) > Data Synchronization.

    3. À direita de Data Synchronization Tasks, selecione a região onde a instância de sincronização está localizada.

  2. Clique em Create Task para abrir a página de configuração da tarefa.

  3. Configure os bancos de dados de origem e de destino.

    Aviso

    Após selecionar as instâncias de origem e destino, leia atentamente os limites exibidos no topo da página. O descumprimento dessas restrições pode causar falha na tarefa ou inconsistência de dados.

    Seção

    Parâmetro

    Descrição

    N/A

    Task Name

    O DTS gera automaticamente um nome para a tarefa. Recomenda-se especificar um nome descritivo para facilitar a identificação. O nome não precisa ser único.

    Source Database

    Select Existing Connection

    • Para usar uma instância de banco de dados que esteja added to the system (recém-criada ou salva), selecione-a na lista suspensa. As informações serão configuradas automaticamente.

      Nota

      No console do DMS, este item de configuração chama-se Select a DMS database instance..

    • Caso não tenha adicionado a instância ao sistema ou não precise usar uma instância já adicionada, configure manualmente as informações do banco de dados a seguir.

    Database Type

    Selecione SQL Server.

    Connection Type

    Selecione Alibaba Cloud Instance.

    Instance Region

    Selecione a região da instância de origem do ApsaraDB RDS for SQL Server.

    Instance ID

    Selecione o ID da instância de origem do ApsaraDB RDS for SQL Server.

    Database Account

    Insira a conta do banco de dados da instância de origem do ApsaraDB RDS for SQL Server. A conta deve ter permissões de owner sobre os objetos a serem sincronizados. Uma conta privilegiada atende a esse requisito.

    Database Password

    Insira a senha correspondente à conta do banco de dados.

    Encryption

    Selecione Non-encrypted ou SSL-encrypted.

    • Se a criptografia SSL não estiver ativada no banco de dados de origem, selecione Non-encrypted.

    • Se a criptografia SSL estiver ativada no banco de dados de origem, selecione SSL-encrypted. O DTS confia no certificado do servidor por padrão.

    Destination Database

    Select Existing Connection

    • Para usar uma instância de banco de dados que esteja added to the system (recém-criada ou salva), selecione-a na lista suspensa. As informações serão configuradas automaticamente.

      Nota

      No console do DMS, este item de configuração chama-se Select a DMS database instance..

    • Caso não tenha adicionado a instância ao sistema ou não precise usar uma instância já adicionada, configure manualmente as informações do banco de dados a seguir.

    Database Type

    Selecione SQL Server.

    Connection Type

    Selecione Alibaba Cloud Instance.

    Instance Region

    Selecione a região da instância de destino do ApsaraDB RDS for SQL Server.

    Instance ID

    Selecione o ID da instância de destino do ApsaraDB RDS for SQL Server.

    Database Account

    Insira a conta do banco de dados da instância de destino do ApsaraDB RDS for SQL Server. A conta deve ter permissões de owner sobre os objetos a serem sincronizados.

    Database Password

    Insira a senha correspondente à conta do banco de dados.

    Encryption

    Selecione Non-encrypted ou SSL-encrypted.

    • Se a criptografia SSL não estiver ativada no banco de dados de destino, selecione Non-encrypted.

    • Se a criptografia SSL estiver ativada no banco de dados de destino, selecione SSL-encrypted. O DTS confia no certificado do servidor por padrão.

  4. Após concluir a configuração, clique em Test Connectivity and Proceed na parte inferior da página.

    Nota
    • Certifique-se de que os blocos CIDR de endereços IP dos servidores DTS estejam adicionados às configurações de segurança dos bancos de dados de origem e destino para permitir o acesso. Isso pode ser feito automática ou manualmente. Para mais informações, consulte Add the IP address CIDR blocks of DTS servers to a whitelist.

    • Se o banco de dados de origem ou destino for autogerenciado (onde o Access Method não é Alibaba Cloud Instance), clique também em Test Connectivity na caixa de diálogo CIDR Blocks of DTS Servers.

  5. Configure os objetos da tarefa.

    1. Na página Configure Objects, configure os objetos a serem sincronizados.

      Parâmetro

      Descrição

      Synchronization Types

      Incremental Data Synchronization vem selecionado. Por padrão, você também deve selecionar Schema Synchronization e Full Data Synchronization. Após a pré-verificação, o DTS executa uma sincronização completa dos objetos selecionados da instância de origem para o cluster de destino, servindo como base para a sincronização incremental subsequente.

      Method to Migrate Triggers in Source Database

      Escolha um método para sincronizar triggers conforme sua necessidade. Se não houver triggers para sincronizar, não é necessário configurar este parâmetro. Para mais informações, consulte Configure how to synchronize or migrate triggers.

      Nota

      Este parâmetro só está disponível quando Schema Synchronization estiver definido em Synchronization Types.

      SQL Server Incremental Synchronization Mode

      • Log-based Parsing for Non-heap Tables and CDC-based Incremental Synchronization for Heap Tables (Hybrid Log-based Parsing):

        • Vantagens:

          • Suporta cenários com tabelas heap, tabelas sem chave primária, tabelas compactadas e tabelas com colunas computadas no banco de dados de origem.

          • Alta estabilidade do link. Este modo obtém instruções DDL completas e oferece suporte abrangente a cenários DDL.

        • Desvantagens:

          • O DTS cria um trigger dts_cdc_sync_ddl, uma tabela de heartbeat dts_sync_progress e uma tabela de armazenamento DDL dts_cdc_ddl_history no banco de dados de origem. Também ativa o CDC no nível do banco de dados e em algumas tabelas.

          • Não é possível executar instruções SELECT INTO, TRUNCATE, RENAME COLUMN ou modificação de tipo de coluna em tabelas com CDC ativado no banco de dados de origem. O trigger criado pelo DTS não pode ser excluído manualmente.

            Nota

            Tabelas contendo tipos geometry, geography ou hierarchyid não suportam ativação de CDC.

      • Incremental Synchronization Based on Logs of Source Database (Heap tables are not supported):

        • Vantagens:

          Este modo não é intrusivo ao banco de dados de origem.

        • Desvantagens:

          Não suporta cenários com tabelas heap, tabelas sem chave primária, tabelas compactadas ou tabelas com colunas computadas no banco de dados de origem.

      • Polling and querying CDC instances for incremental synchronization:

        • Vantagens:

          • Suporta sincronização completa e incremental quando o banco de dados de origem é Amazon RDS for SQL Server, Azure SQL Database, Azure SQL Managed Instance, Azure SQL Server on Virtual Machine ou Google Cloud SQL for SQL Server.

          • Este modo usa o componente nativo Change Data Capture (CDC) do SQL Server para obter dados incrementais, tornando a sincronização mais estável e consumindo menos largura de banda de rede.

        • Desvantagens:

          • A conta do banco de dados de origem usada pela instância DTS deve ter permissão para ativar o CDC. Existe um atraso de aproximadamente 10 segundos na sincronização incremental.

          • Em cenários envolvendo sincronização de múltiplos bancos de dados e tabelas, podem haver riscos de problemas de estabilidade e desempenho.

      The maximum number of tables for which CDC is enabled that DTS supports.

      Esta configuração limita o número de tabelas nas quais o CDC pode ser ativado dentro da instância de sincronização atual. O valor padrão é 1.000.

      Nota

      Este parâmetro não estará disponível se você definir SQL Server Incremental Synchronization Mode como Incremental Synchronization Based on Logs of Source Database (Heap tables are not supported).

      Processing Mode of Conflicting Tables

      • Precheck and Report Errors: Verifica se existe uma tabela com o mesmo nome no banco de dados de destino. Se não existir, a pré-verificação é aprovada. Se existir, a pré-verificação falha e a tarefa não inicia.

        Nota

        Se não for possível excluir ou renomear a tabela homônima no destino, mapeie-a para um nome diferente. Para mais informações, consulte Map table and column names.

      • Ignore Errors and Proceed: Ignora a verificação de nomes de tabela duplicados no destino.

        Aviso

        Selecionar Ignore Errors and Proceed pode causar inconsistência de dados e colocar seus negócios em risco. Por exemplo:

        • Se os esquemas das tabelas forem iguais e um registro no destino tiver a mesma chave primária ou única que um registro na origem:

          • Durante a sincronização completa, o DTS mantém o registro no cluster de destino e o registro correspondente da origem não é sincronizado.

          • Durante a sincronização incremental, o registro da origem sobrescreve o registro no destino.

        • Se os esquemas forem diferentes, a sincronização inicial pode falhar, resultando em sincronização parcial de colunas ou falha total. Prossiga com cautela.

      Source Objects

      Na caixa Source Objects, clique em um objeto para sincronizar e depois clique em 向右 para movê-lo para a caixa Selected Objects.

      Nota

      É possível selecionar bancos de dados, tabelas e colunas como objetos de sincronização. Ao selecionar tabelas ou colunas, outros objetos como views, triggers e stored procedures não serão sincronizados para o destino.

      Selected Objects

      • Para renomear um único objeto de sincronização na instância de destino, clique com o botão direito no objeto na caixa Selected Objects. Para mais detalhes sobre renomeação, consulte Map a single database, table, or column.

      • Para alterar em lote os nomes de vários objetos na instância de destino, clique em Batch Edit no canto superior direito da caixa Selected Objects. Para mais informações, consulte Map databases, tables, and columns in a batch.

      Nota
      • Para selecionar as operações SQL a sincronizar no nível de banco de dados ou tabela, clique com o botão direito em um objeto na caixa Selected Objects e escolha as operações desejadas na caixa de diálogo exibida.

      • Para filtrar dados usando cláusulas WHERE, clique com o botão direito em uma tabela na caixa Selected Objects e especifique as condições de filtro na caixa de diálogo. Para mais informações, consulte Set filter conditions.

      • Ao usar o recurso de mapeamento de nomes de objetos, outros objetos dependentes de um objeto renomeado podem falhar na sincronização.

    2. Clique em Next: Advanced Settings para configurar parâmetros avançados.

      Parâmetro

      Descrição

      Dedicated Cluster for Task Scheduling

      Por padrão, o DTS agenda tarefas em um cluster compartilhado, sem necessidade de seleção. Para desempenho mais estável, adquira um cluster dedicado para executar tarefas de sincronização. Para mais informações, consulte What is a DTS dedicated cluster?.

      Retry Time for Failed Connections

      Se a conexão com o banco de dados de origem ou destino falhar após o início da tarefa, o DTS reportará um erro e iniciará tentativas de reconexão imediatas. A duração padrão de tentativa é de 720 minutos. Você pode especificar uma duração personalizada entre 10 e 1.440 minutos, recomendando-se pelo menos 30 minutos. Se a reconexão for bem-sucedida dentro desse período, a tarefa será retomada automaticamente; caso contrário, ela falhará.

      Nota
      • Se houver múltiplas instâncias DTS (ex: Instância A e B) compartilhando a mesma origem ou destino, e o tempo de tentativa for definido como 30 minutos para A e 60 minutos para B, a menor duração (30 minutos) prevalecerá para ambas.

      • Como o DTS cobra pelo tempo de execução durante as tentativas de reconexão, recomenda-se personalizar a duração conforme a necessidade do negócio ou liberar a instância DTS assim que as instâncias de banco de dados forem liberadas.

      Retry Time for Other Issues

      Se ocorrerem problemas não relacionados à conectividade (como exceções na execução de DDL ou DML) após o início da tarefa, o DTS reportará erro e iniciará tentativas contínuas. A duração padrão é de 10 minutos, personalizável entre 1 e 1.440 minutos (recomenda-se 10 minutos ou mais). Se as operações forem bem-sucedidas dentro do prazo, a tarefa retoma automaticamente; caso contrário, falhará.

      Importante

      O valor de Retry Time for Other Issues deve ser menor que o de Retry Time for Failed Connections.

      Enable Throttling for Full Data Synchronization

      Durante a fase de sincronização completa, o DTS consome recursos de leitura e escrita dos bancos de origem e destino, aumentando a carga. Para reduzir esse impacto, defina limites de taxa configurando os parâmetros Queries per second (QPS) to the source database, RPS of Full Data Migration e Data migration speed for full migration (MB/s).

      Nota
      • Esta opção só está disponível quando Synchronization Types estiver definido como Full Data Synchronization.

      • Você também pode adjust the full synchronization rate após a instância de sincronização estar em execução.

      Enable Throttling for Incremental Data Synchronization

      Também é possível definir limites de taxa para a sincronização incremental. Para aliviar a pressão no banco de dados de destino, configure RPS of Incremental Data Synchronization e Data synchronization speed for incremental synchronization (MB/s).

      Environment Tag

      Selecione uma tag de ambiente para identificar a instância. Esta configuração pode ser ignorada neste exemplo.

      Configure ETL

      Escolha se deseja ativar o recurso de extração, transformação e carga (ETL). Para mais informações, consulte What is ETL? Valores válidos:

      Monitoring and Alerting

      Especifique se deseja configurar alertas. Se a sincronização falhar ou a latência exceder o limiar definido, uma notificação será enviada ao contato de alerta.

    3. Clique em Next: Data Validation para configurar uma tarefa de validação de dados.

      Para usar o recurso de validação de dados, consulte as instruções de configuração em Configure data validation.

  6. Salve a tarefa e execute a pré-verificação.

    • Para visualizar os parâmetros da api referentes a esta instância, passe o mouse sobre o botão Next: Save Task Settings and Precheck e clique em Preview OpenAPI parameters no balão exibido.

    • Após consultar os parâmetros da api, clique em Next: Save Task Settings and Precheck na parte inferior da página.

    Nota
    • O DTS executa uma pré-verificação antes do início do job de sincronização. O job só inicia após a aprovação de todos os itens.

    • Se a pré-verificação falhar, clique em View Details no item com falha. Corrija o problema conforme indicado e execute a pré-verificação novamente.

    • Se a pré-verificação retornar um aviso:

      • Se um item de verificação falhar e não puder ser ignorado, clique em View Details ao lado do item. Siga as instruções para corrigir o problema e execute a pré-verificação novamente.

      • Para itens que podem ser ignorados, clique sequencialmente em Confirm Alert Details, Ignore, OK e Precheck Again para ignorar o aviso e reexecutar a pré-verificação. Ignorar avisos pode causar inconsistência de dados e riscos aos negócios.

  7. Adquira a instância.

    1. Quando a Success Rate for 100%, clique em Next: Purchase Instance.

    2. Na página Purchase, selecione o método de faturamento e a especificação do link para a instância de sincronização. A tabela abaixo detalha esses parâmetros.

      Categoria

      Parâmetro

      Descrição

      New Instance Class

      Método de Faturamento

      • Assinatura: Pagamento realizado na criação da instância. Ideal para necessidades de longo prazo e mais econômico que o pagamento conforme o uso. Quanto maior a duração, maior o desconto.

      • Pagamento conforme o uso: Cobrança horária. Adequado para necessidades de curto prazo. Libere a instância logo após o uso para economizar.

      Configuração do Grupo de Recursos

      Grupo de recursos ao qual a instância pertence. O padrão é o grupo de recursos padrão. Para mais informações, consulte What is Resource Management?.

      Especificação do Link

      O DTS oferece especificações de sincronização com diferentes níveis de desempenho, o que afeta a taxa de transferência. Escolha a especificação adequada ao seu cenário de negócios. Para mais informações, consulte Data synchronization link specifications.

      Duração da Assinatura

      No modo assinatura, selecione a duração e quantidade. Opções mensais de 1 a 9 meses ou anuais de 1, 2, 3 ou 5 anos.

      Nota

      Esta opção só está disponível quando o método de faturamento for Subscription.

    3. Após concluir a configuração, leia e selecione Data Transmission Service (Pay-as-you-go) Service Terms.

    4. Clique em Buy and Start. Na caixa de diálogo OK, clique em OK.

      Acompanhe o progresso da tarefa na página Data Synchronization.

Verificar status do CDC

Esta seção descreve como verificar o status do CDC ou desativá-lo.

Nota

Substitua as variáveis pelos valores reais antes de executar as instruções SQL abaixo.

  • Para verificar o status do CDC no banco de dados:

    SELECT name, is_cdc_enabled FROM sys.databases WHERE name = '<your db name>';
  • Para verificar o status de um job de CDC:

    SELECT database_name(database_id), job_type FROM [msdb].[dbo].[cdc_jobs] WHERE database_id = DB_ID('<your db name>');
  • Para confirmar o funcionamento correto do CDC:

    • Verifique o uso do espaço de log.

      SELECT * FROM sys.dm_db_log_space_usage;
    • Confirme se o service SQL Server Agent está funcionando corretamente. Para detalhes, consulte SQL Server Agent.

    • Verifique se o CDC está lendo o log corretamente. Falhas na leitura podem fazer o DTS tentar novamente ou encerrar a tarefa.

      SELECT * FROM sys.dm_cdc_log_scan_sessions;
  • Para desativar o CDC em um banco de dados:

    USE [<your db name>];
    
    DROP TRIGGER [dts_cdc_sync_ddl] ON database; 
    # You must drop this trigger to disable CDC. Ignore this statement if the trigger does not exist.
    
    EXECUTE [sys].[sp_cdc_disable_db];