Compartilhar via


Atualizando a comunidade de sincronização do banco de dados

Este tópico mostra como atualizar uma comunidade de sincronização do Sync Framework 2.0 para o Sync Framework 2.1. Os exemplos neste tópico destacam as seguintes classes do Sync Framework:

SqlSyncStoreMetadataUpgrade

SqlCeSyncStoreMetadataUpgrade

Noções básicas sobre a atualização da comunidade

O Sync Framework 2.1 introduz novos recursos e alterações feitas no formato de metadados do banco de dados que o torna incompatível com versões anteriores do Sync Framework. No entanto, o Sync Framework 2.1 pode funcionar em um modo de compatibilidade com versões anteriores com bancos de dados no formato 2.0 de forma que a sincronização continue funcionando mesmo que alguns membros da comunidade ainda não tenham feito a atualização. Saiba que, embora a sincronização possa ser realizada no modo de compatibilidade com versões anteriores, a maioria dos recursos permanece desabilitada até o banco de dados ser atualizado para o formato 2.1. Consulte a tabela na seção Recursos disponíveis no modo de compatibilidade com versões anteriores para obter uma lista dos recursos que podem ser usados no modo de compatibilidade com versões anteriores. Seguindo as etapas descritas na seção Atualizando a comunidade de sincronização, é possível atualizar a comunidade sem sequer perder a possibilidade de manter os bancos de dados sincronizados.

Noções básicas sobre a atualização de metadados

A alteração feita no formato dos metadados do banco de dados no Sync Framework 2.1 é a consideração primária para atualizar a comunidade. O novo formato de metadados é incompatível com as versões anteriores dos provedores de bancos de dados. A atualização para o novo formato de metadados não pode ser desfeita, e quando você tentar usar uma versão anterior dos provedores de banco de dados para sincronizar um banco de dados que esteja no formato 2.1, o Sync Framework gerará uma exceção. Entretanto, a classe SqlSyncProvider no Sync Framework 2.1 detecta a versão do formato de metadados e opera em um modo de compatibilidade com versões anteriores para sincronizar um banco de dados que contém metadados no formato anterior. Como o Sync Framework 2.1 pode sincronizar um banco de dados no formato anterior com um banco de dados em um dos formatos, não é necessário atualizar os metadados de todos os seus bancos de dados ao mesmo tempo. Mas, para garantir que os bancos de dados na sua comunidade de sincronização continuem sincronizando entre si após a atualização de alguns deles, atualize-os na ordem correta. Isso é essencial quando você usa uma arquitetura de 2 camadas porque versões anteriores do Sync Framework não podem ler o formato 2.1. A seção Atualizando uma comunidade de 2 camadas deste documento descreve um procedimento para atualizar uma comunidade de 2 camadas. Se você usar uma arquitetura de N camadas, poderá atualizar em qualquer ordem, desde que o provedor proxy local possa continuar se comunicando com o componente de serviço que representa o provedor de banco de dados no servidor. Para obter mais informações sobre os componentes usados em uma arquitetura de N camadas, consulte Arquitetura e classes para sincronização de bancos de dados.

Lembre-se de que os componentes do Sync Framework 2.1 no namespace Microsoft.Synchronization.Data.SqlServerCe atualizam automaticamente o formato de metadados de um banco de dados do SQL Server Compact. Essa atualização ocorre na primeira vez que um componente desse namespace se conecta ao banco de dados.

Atualizando a comunidade de sincronização

Como SqlSyncProvider tem um modo de compatibilidade com versões anteriores, ele pode sincronizar bancos de dados do SQL Server que armazenam metadados no formato anterior. Isso significa que você pode atualizar cada banco de dados da comunidade conforme necessário, e não precisa atualizar todos eles ao mesmo tempo. As seções a seguir descrevem as etapas para atualizar um banco de dados separado e um procedimento a ser usado para atualizar os bancos de dados de uma comunidade que usa uma arquitetura de 2 camadas.

Atualizando um banco de dados

Para atualizar um banco de dados, siga este procedimento geral:

  1. Instalar o Sync Framework 2.1. Isso o instala lado a lado com o Sync Framework 2.0.

  2. Recompile o aplicativo de sincronização e os outros componentes para usar o Sync Framework 2.1 atualizando as referências aos assemblies Sync Framework para apontar para os assemblies do 2.1 ou use o redirecionamento de associação para carregar os assemblies do Sync Framework 2.1. Para obter mais informações sobre o redirecionamento de associação, consulte Compatibilidade com versões anteriores e interoperabilidade do Sync Framework.

  3. Nesse ponto, você pode continuar sincronizando um banco de dados do SQL Server sem atualizar o formato de metadados, porque o SqlSyncProvider opera no modo de compatibilidade com versões anteriores. Se você sincronizar um banco de dados do SQL Server Compact, ele será atualizado automaticamente para o novo formato de metadados. Lembre-se de que apenas a sincronização opera em modo de compatibilidade com versões anteriores. A maioria das outras operações ou recursos de metadados apresentados no Sync Framework 2.1 resultam na geração de DbSyncException quando ele é executado em um banco de dados com metadados 2.0.

  4. Atualize o formato de metadados do banco de dados chamando SqlSyncStoreMetadataUpgrade..::..UpgradeSyncSchema ou SqlCeSyncStoreMetadataUpgrade..::..UpgradeSyncSchema. O exemplo a seguir mostra como fazer isso:

    sqlUpgrader = new SqlSyncStoreMetadataUpgrade(serverConn, null, null);
    sqlUpgrader.UpgradeSyncSchema();
    
    sqlUpgrader = New SqlSyncStoreMetadataUpgrade(serverConn, Nothing, Nothing)
    sqlUpgrader.UpgradeSyncSchema()
    
  5. Agora é possível sincronizar o banco de dados atualizado com bancos de dados em dos formatos de metadados.

Atualizando a comunidade de 2 camadas

Quando você usa uma arquitetura de 2 camadas na sua comunidade de sincronização, o Sync Framework é executado no computador local e sincroniza um banco de dados local com um banco de dados em um computador remoto que não está executando o Sync Framework. Em uma comunidade de 2 camadas que utilize uma topologia hub-e-spoke, atualize a versão do Sync Framework em todos os computadores spoke antes de atualizar os metadados do banco de dados no computador hub. Caso contrário, quando um computador spoke que usa o Sync Framework 2.0 tentar sincronizar com o banco de dados atualizado no computador hub, o Sync Framework não poderá ler o novo formato de metadados e a sincronização falhará.

Para atualizar uma comunidade de 2 camadas que usa uma topologia hub-e-spoke, utilize este procedimento geral:

  1. Use o procedimento da seção Atualizando um Banco de Dados para atualizar um computador spoke, o aplicativo de sincronização e o banco de dados para o Sync Framework 2.1.

  2. Nesse ponto, você pode continuar sincronizando o banco de dados spoke com o banco de dados hub. O Sync Framework opera no banco de dados hub no modo de compatibilidade com versões anteriores; portanto, apenas a sincronização funciona. Outras operações de metadados no banco de dados hub geram DbSyncException.

  3. Atualize os computadores spoke restantes.

  4. Após a atualização de todos os computadores spoke, atualize o banco de dados hub para o novo formato de metadados.

Recursos disponíveis no modo de compatibilidade com versões anteriores

Quando o Sync Framework opera no modo da compatibilidade com versões anteriores, muitos recursos não podem ser usados. A tabela a seguir lista alguns recursos do Sync Framework e indica se eles podem ser usados no modo de compatibilidade com versões anteriores.

Sync Framework Recurso

Utilizável no modo de compatibilidade com versões anteriores?

Sincronização

Sim

Limpeza de metadados

Sim

Envio em lote

Sim

Detecção de escopo

Sim

Provisionamento e desprovisionamento

Não

Geração de instantâneo

Não

Inicialização de instantâneo de um banco de dados no formato anterior

Sim, mas os metadados são atualizados automaticamente no novo formato.

Tamanho máximo da transação de aplicativo

Não

Restaurar de um backup no formato anterior

Não

Exceções geradas quando as versões de metadados e componente não coincidem

Quando um método do Sync Framework 2.1 é chamado para um recurso que não dá suporte ao modo de compatibilidade com versões anteriores, ou quando componentes anteriores do Sync Framework são usados para sincronizar um banco de dados no novo formato, exceções são geradas para indicar que ocorreu um erro. A lista de exceções a seguir descreve as situações em que as exceções são geradas.

  • DbVersionException é gerado. Isso ocorre quando um método do Sync Framework 2.1 é chamado em um banco de dados no formato anterior e o método não dá suporte à compatibilidade com versões anteriores, como o provisionamento de um escopo chamando SqlSyncScopeProvisioning..::..Apply.

  • SqlException é gerado com a seguinte mensagem: “Nome de coluna 'scope_name' inválido.” Isso ocorre quando um objeto SqlSyncProvider de uma versão anterior do Sync Framework tenta sincronizar um banco de dados que está no novo formato.

  • DbSyncException é gerado com a seguinte mensagem: “Ocorreu um erro ao inicializar adaptadores para o escopo '<scope name>'. Verifique se o nome de escopo especificado no provedor existe na tabela de metadados de escopo e se as tabelas base corretas foram especificadas para esse escopo.” Isso ocorre quando um objeto SqlCeSyncProvider de uma versão anterior do Sync Framework tenta sincronizar um banco de dados que está no novo formato.

Consulte também

Outros recursos

Sincronizando o SQL Server e o SQL Server Compact