Usando várias versões do SQL Server em uma topologia de replicação
A replicação oferece suporte à replicação de dados para versões diferentes do SQL Server. Este tópico fornece informações sobre as seguintes áreas:
Suporte para versões do SQL Server
Mapeamento dos tipos de dados do SQL Server 2008 para versões anteriores
Restauração de um banco de dados replicado de uma versão anterior
Nível de compatibilidade para publicações de mesclagem
Para obter mais informações sobre como replicar dados para SQL Server Express e SQL Server Compact 3.5 SP1, consulte Replicando os dados no SQL Server Express e Replicando os dados no SQL Server Compact. Para obter informações sobre os recursos suportados em cada edição do SQL Server, consulte Recursos compatíveis com as edições do SQL Server 2008.
Versões com suporte do SQL Server
SQL Server 2000 e SQL Server 2005 podem participar de topologias de replicação com SQL Server 2008. Para SQL Server 2000, a versão mínima é o Service Pack 3 (SP3). Para SQL Server 2005, a versão mínima é o Service Pack 2 (SP2).
Normalmente, ao fazer a replicação entre diferentes versões do SQL Server, você ficará limitado à funcionalidade da primeira versão usada. Por exemplo, se atualizar um Distribuidor para uma instância do SQL Server 2008, mas tiver um Publicador executando uma instância do SQL Server 2005 e um Assinante executando uma instância do SQL Server 2000, você ficará limitado à funcionalidade geral e à funcionalidade de replicação do SQL Server 2000.
Observação |
---|
Como o formato de armazenamento em disco do SQL Server é o mesmo em ambientes de 64 e 32 bits, a topologia de replicação pode combinar instâncias de servidor executadas em um ambiente de 32 bits e instâncias de servidor executadas em um ambiente de 64 bits. |
Para todos os tipos de replicação, a versão do Distribuidor não pode ser anterior à versão do Publicador. (Normalmente, o Distribuidor faz parte da mesma instância que o Publicador.)
Para a replicação de transação, um Assinante de uma publicação transacional pode ser de qualquer uma das duas versões do Publicador. Por exemplo, um Publicador do SQL Server 2000 pode ter Assinantes do SQL Server 2008 e um Publicador do SQL Server 2008 pode ter Assinantes do SQL Server 2000.
Para replicação de mesclagem, um Assinante de uma publicação de mesclagem pode ser de qualquer versão anterior à versão do publicador. Para obter mais informações sobre a compatibilidade de versões anteriores, consulte "Nível de compatibilidade para publicações de mesclagem" posteriormente neste tópico. Para obter mais informações sobre os recursos de replicação suportados nas várias edições do SQL Server, consulte Recursos compatíveis com as edições do SQL Server 2008.
Usando um Distribuidor do SQL Server 2005 ou do SQL Server 2008 com um Publicador que executa o SQL Server 2000
O SQL Server 2005 e o SQL Server 2008 podem ser usados como um Distribuidor remoto para Publicadores que executam o SQL Server 2000. Para alterar as propriedades do agente neste cenário, execute os procedimentos armazenados a seguir no Distribuidor. Esses procedimentos permitem que você altere as propriedades que foram apresentadas no SQL Server 2005:
Se você tiver um Publicador e um Distribuidor que executem o SQL Server 2000, poderá alterar as credenciais nas quais os agentes fazem conexões usando sp_changedistpublisher e sp_changesubscriber. No entanto, se você atualizar o Distribuidor para o SQL Server 2008, esses procedimentos não poderão ser usados para as credenciais usadas nos trabalhos de agente existentes. Os procedimentos afetam trabalhos de agente criados depois que o procedimento é chamado. Para alterar as credenciais de trabalhos de agente existentes, chame um dos quatro procedimentos listados anteriormente.
Mapeando novos tipos de dados para versões anteriores
O SQL Server 2008 e o SQL Server 2005 oferecem suporte a vários tipos de dados novos. Conforme mostrado na tabela a seguir, esses novos tipos de dados são mapeados para tipos de dados compatíveis no Assinante se as assinaturas push de um Distribuidor do SQL Server 2005 ou do SQL Server 2008 forem usadas. Se os novos tipos de dados forem replicados aos Assinantes que são executados em versões anteriores do SQL Server, você deverá verificar se os tipos de dados estão mapeados adequadamente:
O mapeamento é executado por padrão para artigos em publicações de mesclagem, mas não para artigos em instantâneo ou publicações transacionais. Para mesclar publicações, o modo no qual os tipos são mapeados é determinado pelo nível de compatibilidade de publicação. Por exemplo, se uma coluna for do tipo geography e o nível de compatibilidade for 90RTM, o tipo será mapeado para varbinary(max). Se o nível de compatibilidade for 80RTM, o tipo será mapeado para image.
O mapeamento do comportamento é controlado pelo parâmetro @schema\_option de sp_addarticle e sp_addmergearticle.
Para obter mais informações sobre como definir opções de esquema, consulte Como especificar opções de esquema (SQL Server Management Studio) e Como especificar opções de esquema (Programação Transact-SQL de replicação).
Tipo de dados do SQL Server 2008 |
Tipo de dados do SQL Server 2005 |
Tipo de dados do SQL Server 2000 |
---|---|---|
UDT (tipo definido pelo usuário) de CLR: 8000 bytes ou menos |
UDT |
image |
UDT: mais de 8000 bytes1 |
varbinary(max) |
image |
date2, 3 |
nvarchar(10) |
nvarchar(10) |
datetime22, 3 |
nvarchar(27) |
nvarchar(27) |
datetimeoffset2, 3 |
nvarchar(34) |
nvarchar(34) |
Atributo FILESTREAM1, 4 |
varbinary(max) |
Sem suporte |
geography e geometry1, 3 |
varbinary(max) |
image |
hierarchyid1, 5 |
varbinary(max) |
image |
nvarchar(max) |
nvarchar(max) |
ntext |
time2, 3 |
nvarchar(16) |
nvarchar(16) |
varchar(max) |
varchar(max) |
text |
varbinary(max) |
varbinary(max) |
image |
xml |
xml |
ntext |
1 Mapeamentos para UDT, FILESTREAM, geography, geometry e tipos de hierarchyid não têm suporte para publicações transacionais com assinaturas atualizáveis. Inclua esses tipos somente se todos os Assinantes de atualização estiverem serem executados no SQL Server 2008 ou uma versão posterior.
2 A replicação não verifica o formato de dados inserido no Assinante. Portanto, seu aplicativo deve garantir que os dados inseridos têm o formato correto para colunas do tipo date, datetime2, datetimeoffset e time. Normalmente isso é feito com uma restrição. Se os dados não tiverem o formato correto, ocorrerão falhas nas inserções ao Publicador.
3SQL Server Compact 3.5 Os assinantes convertem esses tipos depois que forem replicados para o assinante. Para obter informações sobre mapeamentos de tipo de dados para SQL Server Compact 3.5, consulte a documentação do SQL Server Compact 3.5.
Se mapear colunas do tipo geography ou geometry para varbinary(max) ou image, você não poderá replicar restrições padrão para essas colunas. Isso tem as seguintes conseqüências:
Se você já tiver uma restrição padrão no Publicador, descarte a restrição ou especifique se ela não deveria ser replicada. Para especificar que ela não deveria ser replicada, use a opção de esquema de artigos para restrições padrão:
Selecione um valor Falso para a opção Copiar especificações de valor padrão. Para obter mais informações, consulte Como especificar opções de esquema (SQL Server Management Studio).
Desabilite a opção 0x800 do esquema. Para obter mais informações, consulte Como especificar opções de esquema (Programação Transact-SQL de replicação).
Se você quiser adicionar uma restrição padrão no Publicador, primeiro especifique quais alterações do esquema não deveriam ser replicadas. Para obter mais informações, consulte Como replicar alterações de esquema (SQL Server Management Studio) e Como replicar alterações de esquema (Programação Transact-SQL de replicação).
4 FILESTREAM é um atributo em uma coluna varbinary(max). Para obter informações sobre como usar colunas FILESTREAM em tabelas replicadas, consulte a seção "Replicação" de Usando o FILESTREAM com outros recursos do SQL Server. As colunas que têm o atributo FILESTREAM não devem ser incluídas em publicações que usam um instantâneo de modo de caractere.
5 O suporte para as colunas do tipo hierarchyid depende do tipo de replicação e das versões do SQL Server usadas. Para obter mais informações, consulte a seção "Usando colunas hierarchyid em tabelas replicadas" de hierarchyid (Transact-SQL). Para replicação de mesclagem, a hierarchyid será mapeada para a image quando o nível de compatibilidade da publicação for 100RTM e um instantâneo de modo de caractere for usado.
Replicando tipos de dados de XML
Ao replicar tipos de dados XML para o SQL Server Compact 3.5 SP1, os mapas de replicação de mesclagem os mapeiam para Ntext. Os dados XML no SQL Server 2008 têm bytes de prefixo para codificação UTF-16. Esses bytes são preservados ao replicar a partir do SQL Server para o SQL Server Compact 3.5 SP1 usando replicação de mesclagem. Esses bytes de prefixo não são compreendidos pelo SQL Server Management Studio ao exibir a coluna Ntext do banco de dados do SQL Server Compact 3.5 SP1. Entretanto, esses bytes são exibidos como caracteres ilegíveis.
A coleção de esquemas do XML no SQL Server 2008 foi atualizada. Isso causa um efeito ao executar a replicação em colunas XML associadas a esquemas XML do SQL Server 2008 para o SQL Server 2005.
Os fusos horários não são obrigatórios para valores de data, hora e data/hora no Esquema XML no SQL Server 2008. Isso significa que se não for especificado nenhum fuso horário na coluna XML do publicador do SQL Server 2008, a alteração não será aplicada aos assinantes do SQL Server 2005, pois o SQL Server 2005 requer que o fuso horário seja especificado.
As informações de fuso horário sobre os valores do tipo de Esquema XML de data, hora e data/hora do Publicador do SQL Server 2008 serão convertidas para o fuso horário UTC-0 no SQL Server 2005. Isso é representado pelo indicador de fuso horário Z.
Os tipos de data, hora e data/hora do Esquema XML do SQL Server 2008 suportam uma precisão maior. Entretanto, esses valores são arredondados ao replicar para o SQL Server 2005.
Ao replicar valores de data ou data/hora do Esquema XML do SQL Server 2005 para o SQL Server 2008, os valores de um ano negativo não serão aplicados ao SQL Server 2008, pois o SQL Server 2008 não oferece suporte a ele.
Nessas situações, os métodos sp_table_validation e Validate em agentes de Replicação poderiam falhar. Para obter mais informações, consulte a seção "Atualizando XML com tipo do SQL Server 2005 para SQL Server 2008" em XML digitado comparado com XML não digitado.
Publicando dados compactados
O SQL Server 2008 oferece suporte à compactação de linha e de página para tabelas e índices. Para obter informações sobre suporte de replicação de dados compactados, consulte "Como a compactação afeta a replicação" em Criando tabelas e índices compactados.
Restaurando um banco de dados replicado de uma versão anterior
É possível manter as configurações de replicação ao restaurar um backup de um banco de dados replicado de uma versão anterior. Se você restaurar os backups para um servidor e um banco de dados que têm os mesmos nomes que o servidor e o banco de dados dos quais o backup foi obtido, ou se você especificar a opção KEEP_REPLICATION, as configurações de replicação serão preservadas. Para obter mais informações, consulte RESTORE (Transact-SQL). Após a restauração do banco de dados, execute sp_vupgrade_replication para atualizar o esquema e os dados do sistema para oferecer suporte à replicação no nível de produto atual.
Embora seja possível a preservação da replicação após a restauração do backup de uma versão anterior, ela é raramente usada como uma opção de atualização. É mais comum atualizar o banco de dados replicado como parte de uma atualização de produto ou para recriar a configuração da replicação e o banco de dados de um conjunto de scripts.
Nível de compatibilidade para publicações de mesclagem
A replicação de mesclagem usa o nível de compatibilidade da publicação para determinar quais recursos podem ser usados pelas publicações em um determinado banco de dados. Os valores variam de 80RTM (SQL Server 2000 que não tem nenhum pacote de serviço instalado) a 100RTM para SQL Server 2008. O nível de compatibilidade é especificado por um dos seguintes métodos:
Usando o parâmetro @publication\_compatibility\_level de sp_addmergepublication. Para obter mais informações, consulte Como definir o nível de compatibilidade para publicações de mesclagem (Programação Transact-SQL de replicação).
Na página Tipos de Assinante do Assistente para Nova Publicação. Para obter mais informações sobre como executar esse assistente, consulte Como criar uma publicação e definir artigos (SQL Server Management Studio).
Na página Geral da caixa de diálogo Propriedades de Publicação – <Publicação>. Para obter mais informações, consulte Como definir o nível de compatibilidade para publicações de mesclagem (SQL Server Management Studio).
Os seguintes recursos exigem um nível de compatibilidade de 90RTM ou superior:
Registros lógicos. Para obter mais informações, consulte Agrupando alterações a linhas relacionadas com registros lógicos.
Opções de carregamento do assinante. Para obter mais informações, consulte Otimizando o desempenho de replicação de mesclagem com artigos de somente download.
Partições não sobrepostas. Para obter mais informações, consulte Filtro de linha com parâmetros.
Manipuladores de lógica de negócios. Para obter mais informações, consulte Executando lógica comercial durante sincronizações de mesclagem.
Alterações de esquema que usam instruções ALTER <OBJECT>. Para obter mais informações, consulte Fazendo alterações de esquema em bancos de dados de publicação.
Os recursos a seguir não dependem do nível de compatibilidade; entretanto, exigem o Merge Agent incluído com o SQL Server 2005 e versões posteriores. Os Assinantes que são executados em versões anteriores da função SQL Server, se o recurso não estiver habilitado.
Partições pré-computadas. Para obter mais informações, consulte Otimizando o desempenho de filtro com parâmetros com partições pré-computadas.
Sincronização da Web. Para obter mais informações, consulte Sincronização da Web para replicação de mesclagem.
Agentes de fase paralela (especificando -ParallelUploadDownload para o Merge Agent). Para obter mais informações, consulte Replication Merge Agent.
Recursos de instantâneo para publicações que usam filtros com parâmetros. Esses recursos fornecem as seguintes capacidades:
Para um Assinante solicitar um instantâneo se algum não estiver disponível para sua partição.
Para um administrador gerar previamente e agendar uma geração de instantâneos.
Para entregar instantâneos com parâmetros que usam FTP.
Para obter mais informações, consulte Instantâneos para publicações de mesclagem com filtros com parâmetros e Transferindo instantâneos pelo FTP.
Log de histórico aprimorado e estatísticas em nível de artigo no Replication Monitor. Para obter mais informações, consulte Como exibir informações e realizar tarefas para uma assinatura (Replication Monitor).
Comportamento do nível de compatibilidade de publicação no SQL Server 2008
A seguir há alguns comportamentos importantes do nível de compatibilidade de publicação a serem considerados.
O nível de compatibilidade de publicação não está conectado ao nível de compatibilidade de banco de dados.
Se você criar uma publicação usando sp_addmergepublication ou por meio do RMO (Replication Management Objects), o nível de compatibilidade de publicação será definido como 80RTM, por padrão. Se você criar uma publicação no Assistente para Nova Publicação, o nível de compatibilidade de publicação será determinado com base nas opções selecionadas na página Tipos de Assinante do assistente.
Nas versões do SQL Server anteriores ao SQL Server 2005, o nível de compatibilidade de publicação aumentará automaticamente se você habilitar um recurso que exige um nível mais alto. Ao iniciar o SQL Server 2005, você deve definir manualmente o nível de compatibilidade de publicação para 90RTM ou superior antes de habilitar a funcionalidade que exija aquele nível de compatibilidade.
O nível de compatibilidade de publicação pode ser diminuído apenas se o Snapshot Agent não tiver sido iniciado e não houver assinaturas para a publicação.
Todas as publicações no mesmo banco de dados devem ter o mesmo nível de compatibilidade. Esse requisito tem as seguintes conseqüências:
Se um banco de dados contiver uma publicação com um nível de compatibilidade baixo (como 80RTM) e você desejar adicionar outra publicação no mesmo banco de dados que tenha um nível de 90RTM ou superior, deverá aumentar manualmente o nível da primeira publicação antes de adicionar a nova publicação.
Se um banco de dados tiver duas ou mais publicações com baixos níveis de compatibilidade e você desejar adicionar outra publicação no mesmo banco de dados que tenha um nível de 90RTM ou superior, deverá descartar todas as publicações existentes, exceto uma; aumentar o nível de publicação restante para 90RTM ou superior; recriar as publicações descartadas com um nível de 90RTM ou superior; e criar a nova publicação com um nível de 90RTM ou superior.
Componentes exigidos e nível de compatibilidade para sincronização da Web
O SQL Server 2008 oferece suporte à Sincronização da Web para Assinantes em execução no SQL Server 2005, SQL Server 2008 e SQL Server Compact 3.5 versões 3.0, 3.1 e 3.5. A tabela a seguir lista o nível de compatibilidade de publicação e os componentes do servidor exigidos para cada tipo de Assinante.
Versão do publicador |
Versão do Assinante |
Nível de compatibilidade de publicação obrigatório |
Componentes obrigatórios no servidor IIS |
---|---|---|---|
SQL Server 2008 |
SQL Server 2008 |
100RTM |
Componentes IIS do SQL Server 2008 |
SQL Server 2008 |
SQL Server Compact 3.5 3.0, 3.1 e 3.5 |
90RTM |
Componentes IIS do SQL Server Compact 3.5 SP1 e do SQL Server 2008 |
SQL Server 2008 |
SQL Server 2005 |
90RTM |
Componentes IIS do SQL Server 2008 |
SQL Server 2005 |
SQL Server 2005 |
90RTM |
Componentes IIS do SQL Server 2005 |
SQL Server 2005 |
SQL Server Compact 3.5 3.0, 3.1 e 3.5 |
90RTM |
Componentes IIS do SQL Server Compact 3.5 SP1 e do SQL Server 2005 |
SQL Server 2005 |
SQL Server 2008 |
Não aplicável1 |
Não aplicável1 |
1 Essa configuração não tem suporte porque a versão do publicador deve ser igual ou maior que a versão do Assinante.