Alterações de quebra na replicação do SQL Server

Este tópico descreve alterações de quebra na replicação do SQL Server. Essas alterações podem afetar aplicativos, scripts ou funções baseadas em versões anteriores do SQL Server. Talvez você tenha esses problemas ao atualizar. Para obter mais informações, consulte Usando o Supervisor de Atualização para preparar para atualizações.

Alterações de quebra feitas no SQL Server 2005 e no SQL Server 2008

Esta seção descreve as últimas alterações em recursos de replicação que foram feitas no SQL Server 2005 ou no SQL Server 2008.

Alterações de quebra que afetam todos os tipos de replicação

As alterações de quebra descritas a seguir se aplicam a todos os tipos de replicação.

Recurso

Descrição

Alterações exigidas para scripts de replicação

O modelo de segurança de agente de replicação mudou desde a SQL Server 2000. Para obter mais informações detalhadas sobre o modelo de segurança, consulte Modelo de segurança do agente de replicação. Se você for membro da função de servidor fixa sysadmin no SQL Server 2005 e executar scripts de replicação criados no SQL Server 2000 ou no SQL Server 7.0, os scripts serão executados corretamente. Se você for um membro da função do banco de dados fixa dbo ou de outra função, os scripts falharão e será necessário atualizá-los. Para obter mais informações sobre atualização de scripts, consulte Como atualizar scripts de replicação (Programação Transact-SQL de replicação). Embora não se exija a atualização de scripts executados por membros da função sysadmin, ela é recomendada a fim de aproveitar os aprimoramentos de segurança.

Conexões locais para agentes de replicação

Ao atualizar para SQL Server 2005, quaisquer conexões locais que usem Autenticação SQL Server serão modificadas para usar a Autenticação do Windows. Conexões locais são aquelas feitas por um agente para uma instância de SQL Server sendo executada no mesmo computador que o agente. Por exemplo, o Merge Agent para uma assinatura pull é executado no Assinante; assim, as conexões feitas para o Assinante são conexões locais.

Em versões anteriores de SQL Server, os agentes são executados, por padrão, sob o contexto da conta de serviço do agente SQL Server. Após a atualização, conexões locais são executadas sob o contexto dessa conta. A SQL Server 2005 permite controle refinado de cada conta sob a qual os agentes de replicação executam e fazem conexões Integradas do Windows para bancos de dados e outros recursos; uma conta diferente pode ser especificada para cada agente. Depois da atualização, recomenda-se especificar contas diferentes para cada agente. Para obter mais informações, consulte Considerações sobre atualização de bancos de dados replicados e Modelo de segurança do agente de replicação.

Controles ActiveX

Todos os controles ActiveX são marcados como inseguros para gerar script e para inicialização.

O controle Snapshot Agent ActiveX não está disponível em SQL Server 2005. Em vez disso, use o Snapshot Agent gerenciado. Para obter mais informações, consulte SnapshotGenerationAgent e Como criar o instantâneo inicial (Programação RMO).

Senha para a conta distributor_admin

Não há mais suporte para conexões confiáveis entre um Publicador e um Distribuidor remoto uma vez que elas não exigiam senha (conexões confiáveis eram usadas como padrão em versões anteriores do Service Pack 3SQL Server 2000 ). Se você usa um Distribuidor remoto, antes de fazer a atualização para SQL Server 2005, converta conexões confiáveis em conexões não-confiáveis (esse problema não afeta Publicadores que utilizam um Distribuidor local). Para obter mais informações sobre a conta distributor_admin, consulte Protegendo o Distribuidor.

Para determinar o tipo de conexão usada

  • Execute sp_helpdistpublisher no Distribuidor. Se o valor da coluna trusted for 1, você deverá mudar para uma conexão não-confiável.

Para alterar para uma conexão não-confiável

  1. Execute sp_changedistpublisher no Distribuidor, especificando um valor ‘trusted’ para o parâmetro @property e um valor ‘False’ para o parâmetro @value.

    ObservaçãoObservação
    Algumas versões dos Manuais Online do SQL Server 2000 não listam ‘trusted' como um valor válido para @property. Válido para todas as versões de SQL Server 2000.
  2. Execute sp_changedistributor_password no Publicador e no Distribuidor, especificando uma senha forte para o parâmetro @password.

SQL Server Express não inclui o Agente SQL Server

Se você estiver atualizando SQL Server Express, é necessário reconfigurar a sincronização de replicação porque o SQL Server Express não inclui o agente SQL Server.

Se quiser usar assinaturas pull, você deverá sincronizá-las usando RMO (Replication Management Objects), Gerenciador de Sincronização do Windows ou executar o agente de replicação na linha de comando. Para obter mais informações, consulte Replicando os dados no SQL Server Express.

Se quiser continuar a usar o agente SQL Server para executar trabalhos do agente de replicação, você deve usar assinaturas push ou atualizar para uma versão diferente do SQL Server (todas as versões, exceto SQL Server Express e SQL Server Compact 3.5 SP1, incluem o agente SQL Server). Com assinaturas push, o Distribution Agent ou Merge Agent são executados no Distribuidor, assim o agente SQL Server fica disponível (SQL Server Express não pode ser um Distribuidor).

Assinantes Microsoft Access (Jet 4.0)

Jet é o banco de dados subjacente usado pelo Access e por assinaturas de replicação com suporte para bancos de dados Jet em SQL Server 2000. Não há mais suporte para essas assinaturas.

Recomenda-se o uso de SQL Server Express. O Access pode usar um banco de dados SQL Server como um back-end, já que bancos de dados SQL Server não são afetados por esse problema. Para obter mais informações, consulte Replicando os dados no SQL Server Express.

Alterações de quebra para replicação de transação

As seguintes alterações de quebra se aplicam à replicação de transação:

Recurso

Descrição

Inicializando uma assinatura transacional a partir de backup1

Para inicializar uma assinatura a partir de um backup no SQL Server 2008, um usuário deverá ser membro da função de servidor dbcreator. No SQL Server 2005, a associação na função do banco de dados db_owner não era suficiente.

Para obter mais informações sobre como inicializar uma assinatura a partir de um backup, consulte Inicializando uma assinatura transacional sem um instantâneo.

Opção de serviço enfileiramento de mensagens para assinaturas de atualização enfileiradas

Com assinaturas de atualização enfileiradas, alterações dos Assinantes são gravadas em uma fila e depois são lidas a partir da fila e entregues ao Publicador pelo Queue Reader Agent. Em SQL Server 2000, assinaturas podem usar uma fila SQL Server ou o Serviço de Enfileiramento de Mensagens para enfileirar alterações. O tipo de fila foi especificado com o parâmetro @queue_type de sp_addpublication, que permitiu valores de sql e msmq (Serviço de Enfileiramento de Mensagens). No SQL Server 2005, é permitido somente um valor de sql. Publicações existentes que usam o Serviço de Enfileiramento de Mensagens são modificadas durante atualização para usar uma fila SQL Server. Se você tiver aplicativos que dependem de atualização enfileirada usando o Serviço Enfileiramento de Mensagens, esses aplicativos precisarão ser gravados novamente para acomodar uma fila SQL Server. Para obter mais informações sobre assinaturas de atualização enfileiradas, consulte Assinaturas atualizáveis para replicação de transação.

A atualização irá remover a assinatura do serviço de enfileiramento de mensagens existente se o serviço de enfileiramento de mensagens for executado durante a atualização de SQL Server.

Observação importanteImportante
No Windows 2000 e Windows XP, o serviço do Coordenador de Transações Distribuídas (MSDTC) Microsoft também deve ser executado, uma vez que o Serviço de Enfileiramento de mensagens exige MSDTC naquelas plataformas.

Se o serviço de enfileiramento de mensagens não estiver em execução, remova as filas manualmente depois da atualização. Para obter mais informações sobre a remoção de filas, consulte a documentação do Windows.

Alteração no formato de chamada para atualização de assinaturas

Por padrão, um conjunto de procedimentos armazenados é utilizado para aplicar alterações em Assinantes na replicação transacional. Cada procedimento tem um formato de chamada. Esse formato determina como os parâmetros são passados para o procedimento e o volume de dados enviados ao Assinante. No SQL Server 2000, o formato padrão é CALL. No SQL Server 2005 e no SQL Server 2008, o formato padrão é VCALL.

Essa alteração só afeta topologias nas quais os procedimentos armazenados foram personalizados. Depois da atualização, você deve alterar a assinatura do procedimento personalizado para incluir parâmetros adicionais. Do contrário, o Distribution Agent falhará.

1 Esse problema só afeta o SQL Server 2008 e versões posteriores.

Alterações de quebra para replicação de mesclagem

As alterações de quebra se aplicam à replicação de mesclagem.

Recurso

Descrição

Publicação de SQL Server Express

O MSDE SQL Server pode servir como um Publicador para publicações de mesclagem. SQL Server Express, a substituição para o MSDE, não pode servir como um Publicador. É possível inscrever-se para publicações de mesclagem, transacionais e de instantâneo. Replicação de mesclagem e replicação de transação com inscrições de atualização permitem que alterações sejam propagadas de Assinantes de volta para o Publicador. Para obter mais informações sobre replicação para SQL Server Express, consulte Replicando os dados no SQL Server Express.

Lotes de alterações

Em versões anteriores de SQL Server, alterações feitas pelo Merge Agent eram executadas linha por linha. Em SQL Server 2005, alterações são divididas em lotes para aprimorar o desempenho; assim, mais de uma linha pode ser inserida, atualizada ou excluída em uma única instrução Se alguma tabela publicada nos bancos de dados de publicação ou de assinatura tiver gatilhos, verifique se os gatilhos conseguem lidar com inserções de várias linhas, atualizações e exclusões. Para obter mais informações, consulte Considerações multilinha para gatilhos DML.

Recriação de tabelas com conflitos

Em atualização para SQL Server 2005, tabelas com conflitos são recriadas com DBO como proprietário. Se quaisquer tabelas forem de propriedade de outros usuários em SQL Server 2000, pode haver a necessidade de modificar seu aplicativo.

A replicação de mesclagem cria uma tabela com conflitos para cada artigo em uma publicação, com um nome na forma conflict_PublicationName_ArticleName. Todas as tabelas de metadados são recriadas na atualização e todas as tabelas de conflito são criadas no esquema DBO.

Novos intervalos de identidade atribuídos

Para tabelas que usam gerenciamento automático do intervalo de identidade, a replicação pode atribuir novos intervalos de identidade durante a atualização. Se alguma tabela tiver um intervalo de identidade atribuído para o Assinante maior do que o do Publicador, a replicação atribui um intervalo para o Publicador igual ao do Assinante.

Para determinar os intervalos usados para cada artigo, execute sp_helpmergearticle no banco de dados de publicação e verifique as colunas pub_identity_range e identity_range.