Limitações de replicação

Quando você usa a replicação de mesclagem com assinantes do Microsoft SQL Server Compact 3.5, a publicação fica com várias limitações. Esta seção descreve essas limitações.

Restrições de alteração de esquema no assinante

Você pode fazer algumas alterações de esquema no assinante, mas não todas. A tabela a seguir descreve as possíveis alterações de esquemas que podem ou não ser efetuadas no assinante.

Ação

Permitida em uma tabela replicada

Excluir uma tabela

Não

Renomear uma tabela

Não

Adicionar/descartar/remover uma coluna

Não

Alterar a propagação ou o incremento em uma coluna Identidade

Sim

Adicionar ou descartar padrão

Sim

Adicionar ou descartar a chave primária

Não

Adicionar ou descartar a chave estrangeira

Não

Adicionar ou descartar o índice

Observação

É recomendável não adicionar ou descartar índices em colunas de replicação nas tabelas de usuário. Isso resulta na falha da sincronização porque as colunas de replicação são tratadas como colunas do sistema.

Sim

Renomear o índice

Sim

Importante

Não é possível fazer alterações de esquema nas tabelas do sistema.

Requisitos adicionais

As seguintes regras se aplicam a assinantes do SQL Server Compact 3.5:

  • Consumo de memória

    Durante a sincronização, depois que a reinicialização for solicitada, o banco de dados SQL Server Compact 3.5 pode aumentar temporariamente para dobrar o tamanho do banco de dados real, mas será reduzido após a conclusão da sincronização (com base em sua política de redução automática.)

  • Validação de filtro de assinatura

    A validação de filtro permite o editor verifique o valor do filtro de um assinante antes de sincronizar dados. Se o valor do filtro tiver sido alterado no assinante, o editor exigirá uma reinicialização no assinante. Durante a sincronização de dados com o SQL Server 2008 R2, o SQL Server Compact 3.5 pode usar a validação de filtro.

    Observação

    A propriedade HostName especifica o valor de filtro dinâmico para a assinatura. Se você quiser alterar o valor do filtro dinâmico do assinante especificando uma nova propriedade HostName deverá chamar o método Reinitialize antes da sincronização.

  • Distinção de maiúsculas e minúsculas

    A partir da versão do SQL Server Compact 3.5 Service Pack 1, o SQL Server Compact passou a dar suporte à definição de agrupamentos com diferenciação de maiúsculas e minúsculas no nível de banco de dados. No entanto, não é feita a diferenciação de maiúsculas de minúsculas em nomes de objeto, como nomes de tabela, palavras-chave de idioma, funções e exibições, em um banco de dados do SQL Server Compact, mesmo se o agrupamento diferenciar maiúsculas de minúsculas.

    Em outras palavras, os objetos são tratados de forma diferente em um banco de dados do SQL Server Compact e em um banco de dados do SQL Server. Por exemplo, duas tabelas, MYTABLE e mytable, são tratadas como objetos distintos em um banco de dados do SQL Server que diferencie maiúsculas de minúsculas. Os mesmos nomes de tabela geram um conflito de nomenclatura em um banco de dados do SQL Server Compact. Por outro lado, dois valores, MYVALUE e myvalue, não causariam mais uma violação de chave primária no SQL Server Compact, pois são tratados como o valor diferente, da mesma forma que não causariam uma violação em um banco de dados do SQL Server que diferencia maiúsculas de minúsculas.

  • Número de colunas em uma tabela

    O SQL Server Compact 3.5 aloca sete colunas do sistema para controle. No entanto, essas tabelas do sistema não são consideradas em relação ao limite no número de colunas.

  • Restrições NOT FOR REPLICATION

    O SQL Server Compact 3.5 não oferece suporte à opção NOT FOR REPLICATION. Não crie restrições usando essa opção. Se as restrições em um banco de dados tiverem a opção NOT FOR REPLICATION, remova a restrição e crie-a novamente. Se a opção NOT FOR REPLICATION for especificada, a restrição ainda será criada no assinante do SQL Server Compact 3.5, mas não incluirá a sintaxe de NOT FOR REPLICATION.

  • Tempo limite de conexão

    As assinaturas do SQL Server Compact 3.5 se recuperam de falhas de comunicação através da reinicialização do último bloco de dados transmitido com êxito, enquanto a conexão é restaurada no período de tempo limite configurável pelo usuário. Isso torna a sincronização possível, mesmo que o transporte subjacente não seja confiável ou não esteja temporariamente disponível.

  • Instantâneos

    O SQL Server Compact 3.5 oferece suporte à opção de local do instantâneo alternativo ou padrão. Para especificar um local de instantâneo alternativo, você pode definir essa opção usando o procedimento armazenado de sp_addmergepublication ou o SQL ServerManagement Studio para alterar as propriedades de uma publicação existente.

    • Para usar o procedimento armazenado de sp_addmergepublication

      Defina a opção @snapshot\_in\_defaultfolder como FALSE e @alt\_snapshot\_folder= local da pasta alternativa do instantâneo.

    • Para alterar as propriedades de publicação de uma publicação existente

      Na seção Instantâneoda caixa de diálogo Propriedades da publicação, limpe a caixa de seleção Colocar os Arquivos na Pasta Padrão, marque a caixa de seleção Colocar os Arquivos nesta Pasta e especifique o novo local.

    Observação

    O SQL Server Compact 3.5 não oferece suporte à opção de instantâneo compactado.

Para obter mais informações sobre instantâneos, consulte Configurando a pasta de instantâneo.

Informações não propagadas para um assinante do SQL Server Compact 3.5

Você pode incluir os seguintes itens em uma publicação do SQL Server, mas eles não serão propagados para o assinante do SQL Server Compact 3.5:

  • Restrições CHECK

  • Propriedades estendidas

  • Procedimentos armazenados

  • Exibições

  • Funções definidas pelo usuário

  • Disparadores

Como a replicação do SQL Server Compact 3.5 não pode propagar esses itens, você deve implementar uma lógica equivalente em um aplicativo baseado no SQL Server Compact 3.5. Isso garante que o banco de dados SQL Server Compact 3.5 permaneça consistente com o banco de dados SQL Server. Por exemplo, se o banco de dados SQL Server incluir uma restrição CHECK, o aplicativo baseado no SQL Server Compact 3.5 deverá implementar a verificação correspondente em um código de aplicativo.

Criando índices em um banco de dados SQL Server Compact 3.5 local

Você pode criar índices exclusivos em um banco de dados SQL Server Compact 3.5 local, mesmo que o banco de dados seja um assinante de uma publicação. Isso é útil, mas pode causar problemas se o editor, que não tem uma restrição exclusiva em uma coluna, enviar dados não-exclusivos para o assinante. Por exemplo, você pode ter uma tabela T com colunas C1 e C2 e a chave primária estar em C1.

C1

C2

A

1

B

2

C

3

Uma sincronização inicial ocorre no banco de dados SQL Server Compact 3.5. Após essa sincronização, um índice exclusivo é adicionado à C2 no banco de dados de assinatura. Nenhuma alteração é feita no banco de dados da publicação.

Durante a próxima sincronização, o SQL Server insere as seguintes linhas:

D

3

E

3

Neste caso, a sincronização falha porque o editor tentou inserir valores não-exclusivos na C2. A sincronização continuará falhando até que a restrição exclusiva seja removida do banco de dados de assinatura.