Estou usando a replicação de mesclagem no SQL 2012.
Por que você não pode marcar as restrições padrão como NOT FOR REPLICATION? Você pode desabilitar todas as restrições padrão para um artigo de mesclagem, mas é tudo ou nada, então não parece oferecer controle suficiente.
Que tal este cenário,
- O usuário insere um registro 'Shape' em um cliente
- O 'Shape' tem uma restrição padrão para definir o campo NumberOfSides como 4
- O usuário do cliente edita o valor de NumberOfSides e o define como 5
- Eles sincronizam com o servidor
Quando eles sincronizam com o servidor, ele não repete a restrição padrão e define o valor de 'NumberOfSides' de volta para 4?
Estou perdendo alguma coisa aqui?
Não quero desabilitar as restrições padrão que estão sendo replicadas para o cliente porque há valores padrão válidos que precisam ser definidos. O usuário do lado do cliente precisa ter esses valores definidos para usar o software.
ATUALIZAR:
A explicação sobre a restrição padrão sendo aplicada apenas uma vez faz sentido.
Portanto, minha única pergunta restante é se eu tiver restrições padrão que usam sequências, estou com problemas porque as sequências não podem ser replicadas. Essas são minhas duas únicas opções?
- Desative todas as restrições padrão para uma tabela específica (não é ideal se algumas delas não forem para sequências)
- Crie as sequências manualmente no lado do cliente e, em seguida, crie um manipulador personalizado para aplicar os valores de sequência corretos no servidor durante a sincronização
Quando os dados são replicados de um servidor para outro usando SQL Replication, todos os valores que foram inseridos na linha são enviados junto. As restrições padrão só se aplicam quando nenhum valor foi especificado para a coluna. Se o usuário especificar um valor de 5, então 5 será replicado e inserido na tabela.