Temos uma publicação de mesclagem que estava funcionando bem há muito tempo (anos). Recentemente, um artigo foi adicionado, fomos informados de que o instantâneo estava desatualizado, então o regeneramos. Em seguida, recebemos mensagens de erro durante a inicialização e encontramos este problema nos logs de erros detalhados:
Msg 1934, Nível 16, Estado 1, Procedimento DDLTrigger_Index, Linha 19 INSERT falhou porque as seguintes opções SET têm configurações incorretas: 'ANSI_PADDING'. Verifique se as opções SET estão corretas para uso com exibições indexadas e/ou índices em colunas computadas e/ou notificações de consulta e/ou métodos de tipo de dados xml.
...avanço rápido para agora. Em experimentos, descobrimos que sim, é possível criar uma publicação mesclada no editor e se inscrever em nosso servidor de assinantes, mas apenas se estiver usando um banco de dados diferente. Passei por isso apenas para descartar permissões / etc e para determinar se era realmente o banco de dados do assinante que era o problema.
Portanto, parecia lógico remover a replicação do banco de dados afetado na esperança de limpar qualquer confusão de metadados enterrada:
sp_removedbreplication @dbname = 'sickDB' @type = 'all'
Até agora tudo bem. No entanto, agora recebo exatamente o mesmo erro, mas muito mais cedo no processo. Especificamente, ao executar:
/****** Begin: Script to be run at Subscriber ******/
use [sickDB]
exec sp_addmergepullsubscription
@publisher = N'publisher',
@publication = N'publication',
@publisher_db = N'goodDB',
@subscriber_type = N'Local',
@subscription_priority = 0,
@description = N'hope this works', @sync_type = N'Automatic'
(acima editado ligeiramente).
Existe algum problema remanescente à espreita nos metadados? A teoria original sobre o material ANSI_PADDING era de fato algumas tabelas no banco de dados do assinante com colunas computadas, portanto, que pareciam relacionadas. No entanto, algumas mudanças nas configurações ANSI_PADDING (e pesquisas no Google) não levaram a uma resposta conclusiva.
Muito obrigado pela leitura e deixe-me saber de qualquer outra informação que eu possa fornecer que possa ajudar.
Ah, sim, editor e assinante são SQL Server 2005.
Eu acho que você deve verificar se em seu banco de dados você tem algum gatilho ddl que pode desligar 'ANSI_PADDING'. Se no corpo do gatilho você encontrar algo como, por exemplo, SETANSI_NULLS OFF, pode ser seu erro.
Se for o gatilho que está monitorando que os usuários estão removendo ou adicionando índices, ou seja. Isso será possível quando você criar sua assinatura pull e os internos de replicação tentarem adicionar gatilhos de replicação em seu banco de dados de assinantes.
Nesse caso, você precisa desabilitar o gatilho, criar uma assinatura pull e habilitar o gatilho.
Mais você encontra neste link. É um bug no ms sql server 2005
http://connect.microsoft.com/SQLServer/feedback/details/334194/ansi-padding-options-in-replication-snapshot
J