A função ASCII retorna resultados diferentes nas tabelas de banco de dados do Publicador e do Assinante
Aplica-se a: SQL Server 2019
Este artigo fornece soluções alternativas para o problema de que a ASCII
função retorna resultados diferentes nas tabelas de banco de dados Publicador e Assinante.
Sintomas
Considere o cenário a seguir.
Você usa a replicação transacional ou de mesclagem no SQL Server 2019.
O esquema inicial e os dados são aplicados por meio do Replication Snapshot Agent.
No banco de dados do Publicador, uma coluna definida como tipo de dados de caractere inclui um valor NULL - caractere ASCII 0
char(0)
.
Nesse cenário, quando você usa a ASCII
função para converter a coluna nas tabelas de banco de dados Publicador e Assinante, resultados diferentes são retornados. Você pode consultar o seguinte exemplo:
Converta a coluna (
col1
) na tabela do banco de dados do Publisher:SELECT id, col1, ASCII(col1) FROM PublisherTable
Converta a coluna (
col1
) na tabela Banco de dados do assinante:SELECT id, col1, ASCII(col1) FROM SubscriberTable
Solução alternativa
Para contornar esse problema para replicação transacional, siga estas etapas:
Abra o SQL Server Management Studio e conecte-se ao servidor que atua como um Distribuidor.
Em Pesquisador de Objetos, expanda SQL Server Agent e, em seguida, expanda Trabalhos.
Selecione o trabalho do agente de instantâneo para a publicação afetada, clique com o botão direito do mouse nele e selecione Propriedades>>Etapa 2>Editar.
Na janela Propriedades da Etapa de Trabalho , adicione
-NativeBcpFileFormatVersion 100
no final do comando e selecione OK para salvar as alterações.Aplique o driver Microsoft OLE DB mais recente:
Se o agente de distribuição (ou agente de mesclagem) for executado para assinaturas push, aplique-o no servidor do Distribuidor.
Se o agente de distribuição (ou agente de mesclagem) for executado para assinaturas pull, aplique-o no servidor do Assinante.
Renomeie o arquivo msoledbsql.dll na pasta C:\Arquivos de Programas\Microsoft SQL Server\150\COM :
Se for uma assinatura push, renomeie o arquivo na pasta no servidor do Distribuidor.
Se for uma assinatura pull, renomeie o arquivo na pasta no servidor do Assinante.
Copie o arquivo msoledbsql.dll da pasta C:\Windows\System32\ e cole-o na pasta C:\Arquivos de Programas\Microsoft SQL Server\150\COM.
Para contornar esse problema para replicação de mesclagem, siga estas etapas:
Aplique a Atualização Cumulativa 15 (CU15) do SQL Server 2019 ou uma versão posterior no servidor do Distribuidor.
Siga todas as etapas aplicadas ao problema de replicação transacional.