Acesso multiusuário e RDA
O acesso multiusuário no Microsoft SQL Server Compact 3.5 está sempre disponível, inclusive quando você usa RDA. Uma ação pull ou push pode estar em andamento enquanto outro usuário acessa o mesmo banco de dados do SQL Server Compact 3.5.
Como uma operação de pull requer que a tabela local específica não esteja presente no momento do pull, e a tabela é criada quando o pull dos dados é efetuado a partir do servidor, a tabela que está sendo puxada não pode ser acessada até que essa operação seja concluída. Quando os dados estão sendo enviados por push ao servidor, se ocorrerem alterações nos dados após o início dessa operação, essas alterações serão enviadas ao servidor na próxima operação push. Se os dados do servidor precisarem ser atualizados após um determinado push para o servidor, o aplicativo não permitirá outras alterações na tabela, até que as operações push e pull sejam concluídas. Isso garante que as alterações não serão perdidas quando a tabela for descartada.
A possibilidade de várias conexões acessarem um banco de dados do SQL Server Compact 3.5 oferece aos desenvolvedores um modelo mais simples de desenvolvimento. Como o Mecanismo de Banco de Dados do SQL Server Compact 3.5 manipula solicitações de vários aplicativos, ou várias solicitações de conexão de um único aplicativo, os desenvolvedores não precisam agendar o acesso ao banco de dados. Quando são necessárias várias conexões, o Mecanismo de Banco de Dados do SQL Server Compact 3.5 bloqueia os dados de acordo com as necessidades de operações específicas.
Observação
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 SQL Server Compact. Para obter informações sobre componentes de 64 bits, consulte Gerenciando aplicativos de banco de dados de 64 bits.
Alterando a chave primária durante a sincronização
Para uma tabela controlada de RDA, as atualizações, inserções e exclusões são controladas com base na chave primária. Devido à capacidade de acesso multiusuário às colunas de chave primária, é importante que os valores dessas colunas não sejam alterados durante a sincronização.
Aviso Embora a alteração de um valor nas colunas de chave primária ocorra raramente, se isso ocorrer durante a sincronização de uma tabela na qual a chave primária foi alterada, pode ocorrer erro e perda de dados.
Exemplo
Na Tabela A, um valor de chave primária é alterado de 1 para 2. O valor 1 foi armazenado em uma coluna de controle usada pelo RDA, de forma que, quando ocorre um push, o SQL Server Compact 3.5 sabe qual valor usar nos critérios de pesquisa ao atualizar os dados para o novo valor.
O aplicativo inicia a operação push e o novo valor 2 é enviado na mensagem de carregamento para o banco de dados do SQL Server com o valor de pesquisa 1. No entanto, se o novo valor de dados for alterado durante a sincronização, a coluna de controle não irá alterar seu valor de pesquisa de 1 para 2, pois a operação push não foi concluída. Quando o push for bem-sucedido, o próximo push dessa linha sempre falhará. O critério de pesquisa 1 não é mais válido, pois o valor da chave primária foi alterado de 1 para 2 no servidor.
Para obter mais informações sobre o acesso multiusuário, consulte Acesso multiusuário. Para obter mais informações sobre bloqueios, consulte Bloqueando [SQL Server Compact 3.5].