Pergunta

Nós estamos tendo um problema com a replicação de mesclagem. Nosso editor executa o SQL Server 2008, enquanto os nossos dois assinantes executar 2005. Nosso editor está tentando enviar um comando ALTER TABLE Foo SET (LOCK_ESCALATION) aos nossos assinantes. Eu acho que eu lembro de ter lido que este comando é novo no SQL Server 2008, e em caso afirmativo, faz sentido que o comando falharia em nossos servidores 2005. Nossa replicação de mesclagem está configurada para compatibilidade 2005, no entanto.

O script de esquema 'se object_id (N' [dbo]. [Usuários]) 'não é exec nula (' ALTER TABLE [dbo]. [Usuários] SET (LOCK_ESCALATION = TABLE) ')' Não pôde ser propagado para o assinante.

Todas as ideias sobre por que a nossa editora estaria tentando fazer isso?

Editar: nível de compatibilidade do nosso server 2008 está definido para "SQL Server 2005 (90)"

Foi útil?

Solução

Um novo recurso do SQL Server 2008, portanto, não apoiada em 2005. Dependendo de como complexo sua configuração é que você pode querer considerar ter o seu prazo de banco de dados compatibilidade 90 (SQL 2005) para se certificar de que você não adicionar SQL Server 2008 recursos para o seu base de dados. Tiveram grandes problemas com replicação de dados esquema desde que surgiram por isso sempre um pouco reticente. Eu sempre tentar torná-lo agir mudo e apenas gerenciar dados -. Teve que suportar um sistema fusão com 32 assinantes com replicação de mesclagem e tinha problemas de esquema grandes constantemente quando nós empurramos as mudanças de esquema

Dito se ele funciona como documentado ele não deve estar tentando empurrar a sua mudança de bloqueio. Verifique as assinaturas são marcados como SQL 2005 compatível. Sua provável que eles não criaram um mapa auto da configuração 2008-2005 da maneira que eles fizeram para tipos de dados (por exemplo)

Um dos caras SQL dev Blogged sobre os novos tipos de bloqueio de uma volta, enquanto

Outras dicas

Isso ocorre porque a incompatibilidade desta instrução com sql server 2005 e aparentemente quando eu faço uma alteração de esquema em uma tabela que está replicando coloca esta instrução nas alterações de esquema.

Existem duas maneiras: Remover e criar novamente a suscription, não se aplica quando está em servidor de produção. A segunda maneira é ir para sysmergeschemachange tabela no banco de dados e excluir a linha que tem algo como isto:

O script de esquema 'se object_id (N '[dbo]. [Os clientes]') não está exec nula ( 'ALTER TABLE [dbo]. [usuários] SET (LOCK_ESCALATION = TABELA) ')' não poderia ser propagadas para o assinante.

Espero que isso ajude.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top