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çãoObservaçã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:

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:

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:

Os seguintes recursos exigem um nível de compatibilidade de 90RTM ou superior:

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.

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.