Limitações do RDA
O RDA no Microsoft SQL Server Compact 3.5 (SQL Server Compact 3.5) tem limitações nas seguintes áreas:
- Diferenciaçã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. Não é feita a diferenciação de maiúsculas e 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.
Os objetos são tratados de modo 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 diferentes em um banco de dados do SQL Server que diferencia 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 causam mais uma violação de chave primária no SQL Server Compact porque são tratados como valores diferentes. Eles também não causam uma violação em um banco de dados do SQL Server que diferencia maiúsculas de minúsculas. - ROWGUID. Quando você usa o RDA para efetuar pull de dados de uma tabela no SQL Server que também participa da replicação no servidor, deve excluir a coluna do sistema com o atributo ROWGUIDCOL. Por padrão, o nome desta coluna é RowGuid.
Por exemplo, para o parâmetro SQLSelectString no método Pull, use SELECT CompanyName, ContactName FROM Customers, em vez de SELECT * FROM Customers. - Disparadores. O SQL Server Compact 3.5 não dá suporte a disparadores. No entanto, os disparadores podem residir na tabela do SQL Server da qual o RDA efetua pull de dados. Para tabelas controladas, os disparadores do SQL Server podem ser executados quando alterações são enviadas por push de volta ao SQL Server. Talvez você precise especificar SET NOCOUNT ON na lógica de disparador. Isso significa não retornar o número de linhas afetadas porque a resposta “nenhuma linha afetada” causará um erro no método Push do RDA.
- Tabelas e colunas. Para tabelas controladas, o número de colunas disponíveis é 1.017 (1.024 menos sete colunas do sistema). Essas sete colunas do sistema são protegidas e usadas para tabelas RDA controladas.
- Colunas computadas. O método Pull falhará se o conjunto de registros contiver colunas computadas.
- Colunas IDENTITY. Se você usar as colunas IDENTITY para gerar exclusividade, o RDA não gerenciará as colunas IDENTITY dinamicamente. Os valores iniciais padrão para uma coluna IDENTITY no dispositivo são sempre partida=1, incremento=1. O SQL Server Compact 3.5 permite que você modifique os valores SEED e INCREMENT de identidade na tabela de banco de dados local usando a instrução ALTER TABLE. Isso permite que você gerencie o intervalo de identidade manualmente para cada dispositivo. Você deverá determinar o maior valor de IDENTITY e ajustar o valor de partida antes de tentar qualquer inserção na tabela. Por exemplo, se o maior valor de IDENTITY for determinado como 99, use ALTER TABLE Orders ALTER COLUMN OrderId IDENTITY (100,1) para redefinir o próximo valor de IDENTITY como 100.
Limitações de esquema
O SQL Server Compact 3.5 pode controlar alterações para a tabela do SQL Server Compact 3.5 resultante. Especificando a opção de controle adequada, o SQL Server Compact 3.5 controla todas as inserções, atualizações e exclusões feitas para a tabela local do SQL Server Compact 3.5. O aplicativo pode então chamar o método Push para propagar essas alterações novamente para a tabela original do SQL Server.
Os métodos Pull e Push controlados por RDA usam o controle de simultaneidade otimista. O SQL Server não mantém registros puxados bloqueados. Quando o aplicativo chama Push, as alterações feitas no banco de dados SQL Server Compact 3.5 local são aplicadas incondicionalmente para o banco de dados SQL Server. Isso pode fazer com que alterações feitas por outros usuários do banco de dados SQL Server sejam perdidas.
Use os métodos Pull e Push controlados quando os registros que você está atualizando forem particionados logicamente e os conflitos forem pouco prováveis. Por exemplo, os métodos Pull e Push controlados podem ser usados em um aplicativo de serviço de campo que controla cada técnico que possua uma lista exclusiva de chamadas de serviço.
Você pode fazer as seguintes alterações de esquema para uma tabela do SQL Server Compact 3.5 criada com um Pull controlado:
- Alterar o valor de partida ou incremento da coluna de identidade.
- Adicionar ou descartar as restrições PADRÃO.
- Adicionar ou ignorar chaves estrangeiras.
- Adicionar ou descartar índices.
- Descartar a tabela.
Você não pode fazer nenhuma das seguintes alterações de esquema para uma tabela do SQL Server enquanto o método Pull controlado ainda estiver sendo processado:
- Adicionar, descartar ou renomear colunas.
- Renomear a tabela.
- Descartar uma chave primária.
- Alterar uma definição de tipo de dados.
Para fazer essas alterações de esquema de tabela do SQL Server, você deve descartar a tabela do SQL Server Compact 3.5 e efetuar novo pull da tabela alterada do SQL Server.