Nota
O acesso a esta página requer autorização. Podes tentar iniciar sessão ou mudar de diretório.
O acesso a esta página requer autorização. Podes tentar mudar de diretório.
O utilitário tablediff é usado para comparar os dados em duas tabelas para não convergência e é útil para solucionar problemas de não convergência em uma topologia de replicação. Este utilitário pode ser usado a partir do prompt de comando ou em um arquivo em lotes para executar as seguintes tarefas:
Compare cada linha entre uma tabela de origem numa instância do SQL Server que atua como um Publisher de replicação e a tabela de destino em uma ou mais instâncias do SQL Server que atuam como Subscritores de replicação.
Execute uma comparação rápida comparando apenas contagens de linhas e esquema.
Execute comparações em nível de coluna.
Gerar um script Transact-SQL para corrigir discrepâncias no servidor de destino e trazer as tabelas de origem e destino para a convergência.
Registre os resultados em um arquivo de saída ou em uma tabela no banco de dados de destino.
Observação
O utilitário tablediff faz parte das ferramentas de replicação do SQL Server. No SQL Server 2022 (16.x), pode encontrar tablediff.exe na sua localização padrão de C:\Program Files\Microsoft SQL Server\160\COM após a instalação da funcionalidade de replicação.
Sintaxe
tablediff
[ -? ] |
{
-sourceserver source_server_name [ \instance_name ]
-sourcedatabase source_database
-sourcetable source_table_name
[ -sourceschema source_schema_name ]
[ -sourcepassword source_password ]
[ -sourceuser source_login ]
[ -sourcelocked ]
-destinationserver destination_server_name [ \instance_name ]
-destinationdatabase subscription_database
-destinationtable destination_table
[ -destinationschema destination_schema_name ]
[ -destinationpassword destination_password ]
[ -destinationuser destination_login ]
[ -destinationlocked ]
[ -b large_object_bytes ]
[ -bf number_of_statements ]
[ -c ]
[ -dt ]
[ -et table_name ]
[ -f [ file_name ] ]
[ -o output_file_name ]
[ -q ]
[ -rc number_of_retries ]
[ -ri retry_interval ]
[ -strict ]
[ -t connection_timeouts ]
}
Argumentos
[ -? ]
Retorna a lista de parâmetros suportados.
-sourceserver source_server_name[\instance_name]
Especifica o nome do servidor de origem. Especifique source_server_name para a instância padrão do SQL Server. Especifique source_server_name\instance_name para uma instância nomeada do SQL Server.
- sourcedatabase source_database
Especifica o nome do banco de dados de origem.
-sourcetable source_table_name
Especifica o nome da tabela de origem que está sendo verificada.
-sourceschema source_schema_name
O proprietário do esquema da tabela de origem. Por padrão, assume-se que o proprietário da tabela seja dbo.
- sourcepassword source_password
Especifica a senha para o logon usado para se conectar ao servidor de origem usando a Autenticação do SQL Server.
Important
Sempre que possível, forneça credenciais de segurança em tempo de execução. Se você precisar armazenar credenciais em um arquivo de script, proteja o arquivo para impedir o acesso não autorizado.
- sourceusersource_login
Especifica o logon usado para se conectar ao servidor de origem usando a Autenticação do SQL Server. Se source_login não for fornecido, a Autenticação do Windows será usada ao se conectar ao servidor de origem. Quando possível, use a autenticação do Windows.
-sourcelocked
Bloqueia a tabela fonte durante a comparação utilizando as pistas da tabela TABLOCK e HOLDLOCK.
-destinationserver destination_server_name[\instance_name]
Especifica o nome do servidor de destino. Especifique destination_server_name para a instância padrão do SQL Server. Especifique <destination_server_name>\<instance_name> para uma instância nomeada do SQL Server.
-destinationdatabase subscription_database
Especifica o nome do banco de dados de destino.
-DestinationTable destination_table
Especifica o nome da tabela de destino.
- destinationschema destination_schema_name
O proprietário do esquema da tabela de destino. Por padrão, assume-se que o proprietário da tabela seja dbo.
-destinationpassword destination_password
Especifica a senha para o logon usado para se conectar ao servidor de destino usando a Autenticação do SQL Server.
Important
Sempre que possível, forneça credenciais de segurança em tempo de execução. Se você precisar armazenar credenciais em um arquivo de script, proteja o arquivo para impedir o acesso não autorizado.
-destinationuser destination_login
Especifica o login usado para se ligar ao servidor de destino usando autenticação SQL Server. Se não fornecer destination_login, a ligação usa autenticação do Windows. Quando possível, use a autenticação do Windows.
-destinationlocked
Bloqueia a tabela de destino durante a comparação com as dicas de tabela TABLOCK e HOLDLOCK.
-b large_object_bytes
Especifica o número de bytes a comparar para colunas de tipos de dados de objetos grandes, que incluem texto, ntext, imagem, varchar(max), nvarchar(max) e varbinary(max). O valor padrão para large_object_bytes é o tamanho da coluna. Os dados maiores que large_object_bytes não são comparados.
-bf número_de_declarações
Especifica o número de instruções Transact-SQL para gravar no arquivo de script Transact-SQL atual quando a -f opção é usada. Quando o número de instruções Transact-SQL excede number_of_statements, um novo arquivo de script Transact-SQL é criado.
-c
Compara diferenças ao nível das colunas.
-dt
Elimina a tabela de resultados especificada por table_name se a tabela já existir.
-et table_name
Especifica o nome da tabela de resultados a ser criada. Se esta tabela já existir, deve usar -DT ou a operação falha.
-f [ file_name ]
Gera um script Transact-SQL para trazer a tabela no servidor de destino para convergência com a tabela no servidor de origem. Opcionalmente, você pode especificar um nome e um caminho para o arquivo de script de Transact-SQL gerado. Se não especificares file_name, a utilitária gera o ficheiro de script Transact-SQL no diretório onde é executado.
-o output_file_name
Especifica o nome completo e o caminho do arquivo de saída.
-q
Realiza uma comparação rápida apenas comparando as contagens de linhas e o esquema.
-rc número_de_tentativas
Número de vezes que o utilitário tenta novamente uma operação com falha.
- Ri retry_interval
Intervalo, em segundos, para esperar entre tentativas.
-strict
Compara estritamente o esquema de origem e destino.
-t tempos_de_espera_de_conexão
Define o período de tempo limite de conexão, em segundos, para conexões com o servidor de origem e o servidor de destino.
Valor de retorno
| Value | Descrição |
|---|---|
0 |
Sucesso |
1 |
Erro crítico |
2 |
Diferenças de tabela |
Observações
Não podes usar a utilidade tablediff com servidores que não sejam SQL Server.
Não há suporte para tabelas com colunas de tipo de dados sql_variant .
Por padrão, o utilitário tablediff suporta os seguintes mapeamentos de tipo de dados entre colunas de origem e destino.
| Tipo de dados de origem | Tipo de dados de destino |
|---|---|
| tinyint | smallint, int ou bigint |
| smallint | int ou bigint |
| int | bigint |
| timestamp | Varbinary |
| varchar(max) | texto |
| nvarchar(max) | ntext |
| varbinary(max) | imagem |
| texto | varchar(max) |
| ntext | nvarchar(max) |
| imagem | varbinary(max) |
Use a -strict opção para não permitir esses mapeamentos e executar uma validação rigorosa.
A tabela de origem na comparação deve conter pelo menos uma chave primária, identidade ou ROWGUID coluna. Quando usar a -strict opção, a tabela de destino também deve ter uma chave primária, identidade ou ROWGUID coluna.
O script Transact-SQL gerado para trazer a tabela de destino para convergência não inclui os seguintes tipos de dados:
- varchar(max)
- nvarchar(max)
- varbinary(max)
- timestamp
- xml
- texto
- ntext
- imagem
Permissões
Para comparar tabelas, precisas SELECT ALL de permissões nos objetos de tabela que estás a comparar.
Para usar a -et opção, deve pertencer à função db_owner na base de dados fixa, ou pelo menos ter CREATE TABLE permissão na base de dados de subscrição e ALTER permissão no esquema do proprietário no servidor de destino.
Para utilizar a opção -dt, deve ser membro da função fixa de base de dados db_owner, ou pelo menos ter permissão ALTER no esquema do proprietário no servidor de destino.
Para usar as -o opções ou -f , você deve ter permissões de gravação para o local do diretório de arquivos especificado.