Sincronização e acesso multiusuário
Como o Microsoft SQL Server Compact 3.5 (SQL Server Compact 3.5) dá suporte de acesso multiusuário, um usuário pode continuar trabalhando no banco de dados enquanto ele está sendo replicado. Isso pode causar conflitos com alterações provenientes do Editor, os conflitos de dados locais, que devem ser considerados quando você desenvolve aplicativos que usam o SQL Server Compact 3.5. Além disso, alguns cenários de plataformas de 64 bits não dão suporte ao acesso simultâneo a um arquivo de banco de dados nas versões mais antigas do . Para obter informações sobre componentes de 64 bits, consulte Gerenciando aplicativos de banco de dados de 64 bits.
Efeitos do acesso multiusuário
Quando você cria um aplicativo que usa o SQL Server Compact 3.5, deve considerar os efeitos do acesso multiusuário no banco de dados. A tabela a seguir abrange alguns dos recursos comuns criados no SQL Server Compact 3.5 e os problemas associados a cada recurso.
Recurso | Problema |
---|---|
Bloqueio |
Durante a sincronização, as alterações do Editor podem não ser aplicadas ao banco de dados do Assinante devido aos bloqueios de dados. Se as alterações de dados estiverem sendo feitas no Assinante e não houver bloqueios persistentes nos dados, a sincronização poderá falhar. Para evitar isso, adicione lógica ao seu aplicativo, pois isso impedirá que um usuário altere dados durante a sincronização. |
Validação |
Se a validação estiver sendo usada e o número de linhas no banco de dados SQL Server Compact 3.5 for alterado durante a sincronização, a validação falhará. Para evitar isso, adicione lógica ao seu aplicativo, pois isso impedirá que um usuário altere dados durante uma sincronização com validação. |
Reinicialização |
Durante a reinicialização de uma assinatura, a camada de replicação excluirá e criará novamente todas as tabelas de sistema e de usuário. Como com assinaturas do SQL Server, todas as alterações feitas após o início da sincronização são perdidas quando ocorre a reinicialização. Para evitar essa perda de dados, adicione lógica ao seu aplicativo, pois isso impedirá que um usuário altere dados durante a reinicialização. |
Alterações de esquema |
Todas as operações DDL (alterações de esquema) devem ter acesso exclusivo à tabela. A alteração de um esquema falhará se a tabela estiver sendo usada por outro processo. |
Alterações durante a sincronização |
Se ocorrer uma alteração nos dados durante a sincronização, essa alteração será enviada durante a próxima sincronização. Se uma sessão de sincronização causar um conflito local, a linha será resolvida como nível de linha, mesmo que o arquivo seja controlado no nível de coluna. |
Detecção e resolução de conflitos
Quando você trabalha em um ambiente multiusuário, podem ocorrer alterações durante a sincronização que causa conflitos. O SQL Server Compact 3.5 detecta conflitos de clientes, mas não os resolve. As informações de conflitos são transmitidas ao Editor para resolução durante a próxima sincronização.
A maioria dos conflitos é resolvida no Editor durante a próxima sincronização. No entanto, se ocorrer um conflito de R/I (Integridade Referencial), o Editor solicitará uma nova sincronização automática no dispositivo. Se esse comportamento ocorrer, não ocorrerá mais de duas novas sincronizações.
Para obter mais informações sobre a detecção e resolução de conflitos, consulte Detecção e resolução de conflitos de replicação.
Usando a propriedade SubscriberConflicts
As alterações feitas para o banco de dados local durante a sincronização poderiam causar um conflito local. Se uma linha do Editor não puder ser aplicada ao Assinante, isso será considerado um conflito de Assinante e a propriedade SubscriberConflicts será definida. Com Assinantes do SQL Server, os conflitos são resolvidos no Assinante. No entanto, o SQL Server Compact 3.5 não tem um reconciliador. Todos os conflitos devem ser resolvidos no Editor. Quando você desenvolve um aplicativo, pode criá-lo para examinar a propriedade SubscriberConflicts após cada sincronização. Se ele for definido com um valor que não seja zero, os dados deverão ser sincronizados novamente para que o Editor possa resolver os conflitos.
Consulte também
Conceitos
Sincronizando dados (SQL Server Compact)
Sincronização de dados síncronos
Sincronização de dados assíncronos
Detecção e resolução de conflitos de replicação