Partilhar via


Resolução de problemas de Sincronização de Dados SQL

Aplica-se a:Banco de Dados SQL do Azure

Este artigo descreve como solucionar problemas conhecidos com a Sincronização de Dados SQL no Azure. Se houver uma resolução para um problema, ela é fornecida aqui.

Para obter uma visão geral da Sincronização de Dados SQL, consulte Sincronizar dados em vários bancos de dados locais e na nuvem com a Sincronização de Dados SQL no Azure.

Importante

No momento, a Sincronização de Dados SQL não oferece suporte à Instância Gerenciada SQL do Azure ou ao Azure Synapse Analytics.

Problemas de sincronização

A sincronização falha na IU do portal nas bases de dados no local que estão associadas ao agente de cliente

A sincronização falha na IU do portal da Sincronização de Dados SQL nas bases de dados no local que estão associadas ao agente de cliente. No computador local que está executando o agente, você vê System.IO.IOException erros no Log de Eventos. Os erros dizem que o disco não tem espaço suficiente.

  • Causa. A unidade não tem espaço suficiente.

  • Resolução. Crie mais espaço na unidade na qual o diretório %TEMP% está localizado.

O meu grupo de sincronização está bloqueado no estado de processamento

Um grupo de sincronização na Sincronização de Dados SQL está no estado de processamento há muito tempo. Ele não responde ao comando stop e os logs não mostram novas entradas.

Qualquer uma das seguintes condições pode resultar em um grupo de sincronização preso no estado de processamento:

  • Causa. O agente do cliente está offline

  • Resolução. Confirme que o agente do cliente está online e tente novamente.

  • Causa. O agente do cliente está desinstalado ou em falta.

  • Resolução. Se o agente do cliente estiver desinstalado ou em falta:

    1. Remova o ficheiro XML do agente da pasta de instalação da Sincronização de Dados SQL, se o ficheiro existir.
    2. Instale o agente num computador no local (pode ser o mesmo computador ou um diferente). Em seguida, submeta a chave do agente que é gerada no portal relativa ao agente que aparece offline.
  • Causa. O serviço Sincronização de Dados SQL está parado.

  • Resolução. Reinicie o serviço Sincronização de Dados SQL.

    1. No menu Iniciar, procure Serviços.
    2. Nos resultados da pesquisa, selecione Serviços.
    3. Localize o serviço Sincronização de Dados SQL.
    4. Se o status do serviço for Parado, clique com o botão direito do mouse no nome do serviço e selecione Iniciar.

Nota

Se as informações anteriores não moverem o grupo de sincronização para fora do estado de processamento, o Suporte da Microsoft poderá redefinir o status do grupo de sincronização. Para que o status do grupo de sincronização seja redefinido, na página de perguntas e respostas da Microsoft para o Banco de Dados SQL do Azure, crie uma postagem. Na postagem, inclua sua ID de assinatura e a ID do grupo de sincronização para o grupo que precisa ser redefinido. Um engenheiro de Suporte da Microsoft responderá à sua publicação e informá-lo-á quando o estado tiver sido reposto.

Vejo dados errados nas minhas tabelas

Se as tabelas que têm o mesmo nome, mas que são de esquemas de base de dados diferentes, estiverem incluídas numa sincronização, verá dados erróneos nas tabelas após a sincronização.

  • Causa. O processo de aprovisionamento da Sincronização de Dados SQL utiliza as mesmas tabelas de controlo para tabelas com o mesmo nome, mas que estão em esquemas diferentes. Por este motivo, as alterações de ambas as tabelas refletem-se na mesma tabela de controlo, o que provoca alterações de dados erradas durante a sincronização.

  • Resolução. Confirme se os nomes das tabelas envolvidas numa sincronização são diferentes, mesmo que as tabelas pertençam a esquemas diferentes numa base de dados.

Vejo dados de chave primária inconsistentes após uma sincronização com êxito

Uma sincronização é comunicada como bem-sucedida e o registo não mostra linhas com falhas ou ignoradas, mas observa que os dados da chave primária são inconsistentes entre as bases de dados no grupo de sincronização.

  • Causa. Este resultado é por predefinição. As alterações em qualquer coluna de chave primária resultam em dados inconsistentes nas linhas em que a chave primária foi alterada.

  • Resolução. Para evitar este problema, confirme se não são alterados dados numa coluna de chave primária. Para corrigir este problema depois de ter ocorrido, elimine a linha que tem dados inconsistentes de todos os pontos finais no grupo de sincronização. Em seguida, reinsira a linha.

Vejo uma degradação significativa no desempenho

O desempenho degrada-se de forma significativa, possivelmente ao ponto de nem sequer conseguir abrir a IU da Sincronização de Dados.

  • Causa. A causa mais provável é um ciclo de sincronização. Um ciclo de sincronização ocorre quando uma sincronização pelo grupo de sincronização A aciona uma sincronização pelo grupo de sincronização B, que, em seguida, aciona uma sincronização pelo grupo de sincronização A. A situação real pode ser mais complexa e pode envolver mais de dois grupos de sincronização no ciclo. O problema é que existe um acionador circular de sincronização, que é provocado por grupos de sincronização sobrepostos uns aos outros.

  • Resolução. A melhor solução é a prevenção. Confirme se não tem referências circulares nos grupos de sincronização. Qualquer linha que seja sincronizada por um grupo de sincronização não pode ser sincronizada por outro grupo de sincronização.

Vejo esta mensagem: "Não é possível inserir o valor NULL na coluna da coluna<>. Coluna não permite nulos." O que isso significa e como posso corrigi-lo?

Esta mensagem de erro indica que ocorreu um dos dois seguintes problemas:

  • Uma tabela não tem uma chave primária. Para corrigir esse problema, adicione uma chave primária a todas as tabelas que você está sincronizando.
  • Há uma cláusula WHERE na instrução CREATE INDEX. A Sincronização de Dados não processa esta condição. Para corrigir esse problema, remova a cláusula WHERE ou faça manualmente as alterações em todos os bancos de dados.

Como o Data Sync lida com referências circulares? Ou seja, quando os mesmos dados são sincronizados em vários grupos de sincronização e continuam mudando como resultado?

A Sincronização de Dados não processa referências circulares. Evite-as.

Problemas com o agente cliente

Para solucionar problemas com o agente cliente, consulte Solucionar problemas do agente de sincronização de dados.

Problemas de manutenção e configuração

Recebo uma mensagem de "disco sem espaço"

  • Causa. A mensagem "disco sem espaço" poderá aparecer se os ficheiros restantes precisarem de ser eliminados. Isto pode ser causado por software antivírus ou por os ficheiros estarem abertos no momento em que as operações de eliminação são efetuadas.

  • Resolução. Exclua manualmente os arquivos de sincronização que estão na pasta %temp% (del \*sync\* /s). Em seguida, elimine os subdiretórios na pasta %temp%.

Importante

Não elimine nenhum ficheiro enquanto a sincronização estiver em curso.

Não consigo eliminar o meu grupo de sincronização

A tentativa de eliminar um grupo de sincronização falha. Qualquer um dos seguintes cenários pode resultar na falha ao eliminar um grupo de sincronização:

  • Causa. O agente do cliente está offline.

  • Resolução. Certifique-se de que o agente cliente está online e, em seguida, tente novamente.

  • Causa. O agente do cliente está desinstalado ou em falta.

  • Resolução. Se o agente do cliente estiver desinstalado ou em falta:
    a. Remova o ficheiro XML do agente da pasta de instalação da Sincronização de Dados SQL, se o ficheiro existir.
    b. Instale o agente num computador no local (pode ser o mesmo computador ou um diferente). Em seguida, submeta a chave do agente que é gerada no portal relativa ao agente que aparece offline.

  • Causa. Um banco de dados está offline.

  • Resolução. Certifique-se de que as suas bases de dados estão todas online.

  • Causa. O grupo de sincronização está provisionando ou sincronizando.

  • Resolução. Aguarde até que o processo de provisionamento ou sincronização seja concluído e tente excluir novamente o grupo de sincronização.

Não consigo anular o registo de uma base de dados do SQL Server

  • Causa. Muito provavelmente, está a tentar anular o registo de uma base de dados que já foi eliminada.

  • Resolução. Para cancelar o registro de um banco de dados do SQL Server, selecione o banco de dados e, em seguida, selecione Forçar exclusão.

    Se esta operação não conseguir remover a base de dados do grupo de sincronização:

    1. Pare e reinicie o serviço de host do agente cliente:
      a. Selecione o menu Iniciar .
      b. Na caixa de pesquisa, introduza services.msc.
      c. Na secção Programas do painel de resultados da pesquisa, faça duplo clique em Serviços.
      d. Clique com o botão direito do rato no serviço Sincronização de Dados SQL.
      e. Se o serviço estiver em execução, pare-o.
      f. Clique com o botão direito do rato no serviço e selecione Iniciar.
      exemplo, Verifique se a base de dados ainda está registada. Se já não estiver registada, já está pronto. Caso contrário, avance para o passo seguinte.
    2. Abra o aplicativo de agente cliente (SqlAzureDataSyncAgent).
    3. Selecione Editar credenciais e insira as credenciais do banco de dados.
    4. Prossiga com o cancelamento do registo.

Não tenho privilégios suficientes para iniciar os serviços do sistema

  • Causa. Este erro ocorre em duas situações:

    • O nome de utilizador e/ou a palavra-passe estão incorretos.
    • A conta de usuário especificada não tem privilégios suficientes para fazer logon como um serviço.
  • Resolução. Conceda credenciais de início de sessão como serviço à conta de utilizador:

    1. Vá para Iniciar>Painel de Controle, Ferramentas Administrativas>, Política de Segurança Local, Política>>Local,>Gerenciamento de Direitos do Usuário.
    2. Selecione Fazer logon como um serviço.
    3. Na caixa de diálogo Propriedades, adicione a conta de usuário.
    4. Selecione Aplicar e, em seguida, selecione OK.
    5. Feche todas as janelas.

Uma base de dados tem o estado "Desatualizada"

  • Causa. A Sincronização de Dados SQL remove as bases de dados que estão offline do serviço há 45 dias ou mais (conforme contado desde o momento em que a base de dados ficou offline). Se uma base de dados estiver offline durante 45 dias ou mais e, em seguida, voltar a ficar online, o respetivo estado aparece como Desatualizado.

  • Resolução. Você pode evitar um status Desatualizado garantindo que nenhum dos seus bancos de dados fique offline por 45 dias ou mais.

    Se o status de um banco de dados estiver desatualizado:

    1. Remova o banco de dados que tem um status Desatualizado do grupo de sincronização.
    2. Adicione o banco de dados novamente ao grupo de sincronização.

    Aviso

    Você perde todas as alterações feitas nesse banco de dados enquanto ele estava offline.

Um grupo de sincronização tem um status "Desatualizado"

  • Causa. Se uma ou mais alterações não forem aplicadas durante todo o período de retenção de 45 dias, um grupo de sincronização poderá ficar desatualizado.

  • Resolução. Para evitar um status Desatualizado para um grupo de sincronização, examine os resultados dos trabalhos de sincronização no visualizador de histórico regularmente. Investigue e resolva quaisquer alterações que não se apliquem.

    Se o status de um grupo de sincronização estiver Desatualizado, exclua o grupo de sincronização e recrie-o.

Um grupo de sincronização não pode ser eliminado no prazo de três minutos após a desinstalação ou paragem do agente

Não pode eliminar um grupo de sincronização no prazo de três minutos após desinstalar ou parar o agente do cliente da Sincronização de Dados SQL associado.

  • Resolução.

    1. Remova um grupo de sincronização enquanto os agentes de sincronização associados estiverem online (recomendado).
    2. Se o agente estiver offline, mas estiver instalado, coloque-o online no computador local. Aguarde que o estado do agente apareça como Online no portal da Sincronização de Dados SQL. Em seguida, remova o grupo de sincronização.
    3. Se o agente estiver offline porque foi desinstalado:
      a. Remova o ficheiro XML do agente da pasta de instalação da Sincronização de Dados SQL, se o ficheiro existir.
      b. Instale o agente num computador no local (pode ser o mesmo computador ou um diferente). Em seguida, submeta a chave do agente que é gerada no portal relativa ao agente que aparece offline.
      c. Experimente eliminar o grupo de sincronização.

O que acontece quando restauro uma base de dados perdida ou danificada?

Se restaurar uma base de dados perdida ou danificada a partir de uma cópia de segurança, poderá existir uma não convergência de dados nos grupos de sincronização aos quais a base de dados pertence.

Mensagem de erro "Sync0022 O cliente não tem autorização para executar a ação 'syncGroupOperationResults/read'"

Se você receber a mensagem Sync0022 Customer does not have authorization to perform action 'syncGroupOperationResults/read'de erro , a conta que está tentando a operação não tem permissões suficientes no nível de assinatura. Adicionar:

  • "Microsoft.Sql/locations/syncMemberOperationResults/read"
  • "Microsoft.Sql/locations/syncAgentOperationResults/read"
  • "Microsoft.Sql/locations/syncGroupOperationResults/read"

Para obter mais informações, veja RBAC de operações de fornecedor de recursos e Contas de Base de Dados da Sincronização de Dados SQL com os privilégios menores necessários.

Próximos passos

Para obter mais informações sobre o SQL Data Sync, consulte:

Para obter mais informações sobre o Banco de dados SQL, consulte: