Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
Aplica-se a:SQL Server
Banco de Dados SQL do Azure
Instância Gerenciada de SQL do Azure
Azure Synapse Analytics
Analytics Platform System (PDW)
O utilitário tablediff é usado para comparar dados em duas tabelas para não convergência e é útil para solução de problemas de não convergência em uma topologia de replicação. Esse utilitário pode ser usado no prompt de comando ou em um arquivo em lotes para executar as seguintes tarefas:
Compare cada linha entre uma tabela de origem em uma instância do SQL Server atuando como um Publicador de replicação e a tabela de destino em uma ou mais instâncias do SQL Server atuando como Assinantes de replicação.
Executa uma comparação rápida comparando apenas contagens de linha e esquema.
Executar comparações em nível de coluna.
Gere um script Transact-SQL para corrigir discrepâncias no servidor de destino e colocar as tabelas de origem e de destino em convergência.
Registrar 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), você pode encontrar tablediff.exe em seu local C:\Program Files\Microsoft SQL Server\160\COM padrão após instalar o recurso 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 com suporte.
-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 de esquema da tabela de origem. Por padrão, supõe-se que o proprietário de tabela seja dbo.
-sourcepassword source_password
Especifica a senha para o logon usada para a conexão com o servidor de origem que usa Autenticação do SQL Server .
Importante
Quando possível, forneça credenciais de segurança em runtime. Se você precisar armazenar credenciais em um arquivo de script, proteja o arquivo para evitar acesso não autorizado.
-sourceuser source_login
Especifica o logon usado para a conexão com o servidor de origem que usa Autenticação do SQL Server . Se source_login não for fornecido, então a autenticação do Windows será usada no momento da conexão com o servidor de origem. Quando possível, use a autenticação do Windows.
-sourcelocked
Bloqueia a tabela de origem durante a comparação usando as dicas de 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 uma instância nomeada <destination_server_name>\<instance_name> do SQL Server.
-destinationdatabase subscription_database
Especifica o nome do banco de dados de destino.
-destinationtable destination_table (tabela_destino)
Especifica o nome da tabela de destino.
-destinationschema destination_schema_name
O proprietário de esquema da tabela de destino. Por padrão, supõe-se que o proprietário de tabela seja dbo.
-destinationpassword destination_password
Especifica a senha para o logon usada para a conexão com o servidor de destino que usa Autenticação do SQL Server .
Importante
Quando possível, forneça credenciais de segurança em runtime. Se você precisar armazenar credenciais em um arquivo de script, proteja o arquivo para evitar acesso não autorizado.
-destinationuser destination_login
Especifica o logon usado para se conectar ao servidor de destino usando a autenticação do SQL Server. Se você não fornecer destination_login, a conexão usará a autenticação do Windows. Quando possível, use a autenticação do Windows.
-destino bloqueado
Bloqueia a tabela de destino durante a comparação usando as dicas de tabela TABLOCK e HOLDLOCK.
-b large_object_bytes
Especifica o número de bytes a serem comparados para colunas de tipo de dados de objeto grande, que incluem texto, ntext, imagem, varchar(max), nvarchar(max)e varbinary(max). O valor padrão para large_object_bytes é o tamanho da coluna. 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 a serem gravadas no arquivo de script Transact-SQL atual quando a opção -f é usada. Quando o número de instruções Transact-SQL exceder number_of_statements, um arquivo de script Transact-SQL novo será criado.
-c
Compara as diferenças no nível da coluna.
-dt
Descarta a tabela de resultados especificada por table_name se a tabela já existir.
-et table_name
Especifica o nome da tabela de resultado a ser criada. Se essa tabela já existir, você deverá usar -DT ou a operação falhará.
-f [ file_name ]
Gera um script Transact-SQL para trazer a tabela ao servidor de destino em convergência com a tabela no servidor de origem. Pode-se optar por especificar um nome e caminho para o arquivo de script Transact-SQL gerado. Se você não especificar file_name, o utilitário gerará o arquivo de script Transact-SQL no diretório em que ele é executado.
-o output_file_name
Especifica o nome e caminho completo do arquivo de saída.
-q
Executa uma comparação rápida comparando apenas as contagens de linhas e o esquema.
-rc number_of_retries
Número de vezes que o utilitário repete uma operação com falha.
-ri retry_interval
Intervalo, em segundos, a esperar entre as repetições.
-strict
Compara estritamente o esquema de origem e de destino.
-t limites_de_tempo_de_conexão
Define o período de tempo limite da conexão, em segundos, para conexões para o servidor de origem e servidor de destino.
Valor retornado
| Valor | Descrição |
|---|---|
0 |
Êxito |
1 |
Erro crítico |
2 |
Diferenças entre tabelas |
Comentários
Você não pode usar o utilitário tablediff com servidores que não são do SQL Server.
Não há suporte para tabelas com colunas de tipo de dados sql_variant .
Por padrão, o utilitário tablediff dá suporte aos mapeamentos de tipo de dados a seguir entre colunas de origem e de 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) | text |
| nvarchar(max) | ntext |
| varbinary(max) | imagem |
| text | varchar(max) |
| ntext | nvarchar(max) |
| imagem | varbinary(max) |
Use a opção -strict para desabilitar 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 você usa a opção -strict , 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 em convergência não inclui os seguintes tipos de dados:
- varchar(max)
- nvarchar(max)
- varbinary(max)
- timestamp
- xml
- text
- ntext
- imagem
Permissões
Para comparar tabelas, você precisa de SELECT ALL permissões nos objetos de tabela que está comparando.
Para usar a opção -et, você deve ser membro do papel de banco de dados fixo db_owner ou, no mínimo, ter permissão CREATE TABLE no banco de dados de assinatura e permissão ALTER no esquema do proprietário de destino no servidor de destino.
Para usar a opção -dt, você deve ser membro da função de banco de dados fixa db_owner, ou pelo menos possuir ALTER permissão no esquema de propriedade do destino no servidor de destino.
Para usar as opções -o ou -f, é preciso ter permissão de gravação para o local de diretório de arquivos especificado.