Limitazioni di RDA
In Microsoft SQL Server 2005 Compact Edition (SQL Server Compact Edition) esistono limitazioni per RDA nelle aree seguenti:
- Distinzione maiuscole/minuscole. I database di SQL Server Compact Edition non fanno distinzione tra maiuscole e minuscole.
- ROWGUID. Quando si utilizza RDA per il pull dei dati da una tabella di SQL Server che partecipa anche alla replica sul server, è necessario escludere la colonna di sistema con l'attributo ROWGUIDCOL. Per impostazione predefinita, il nome di questa colonna è RowGuid.
Per il parametro SQLSelectString nel metodoPull, ad esempio, utilizzare SELECT CompanyName, ContactName FROM Customers anziché SELECT * FROM Customers. - Trigger. SQL Server Compact Edition non supporta i trigger. Tuttavia, i trigger possono trovarsi nella tabella di SQL Server da cui RDA esegue il pull dei dati. Per le tabelle con rilevamento, è possibile eseguire i trigger di SQL Server quando viene eseguito il push delle modifiche a SQL Server. Potrebbe essere necessario specificare SET NOCOUNT ON nella logica dei trigger. Viene così indicato di non restituire il numero di righe modificate, poiché una risposta che afferma che nessuna riga è interessata dall'operazione causa un errore per il metodo Push RDA.
- Tabelle e colonne. Per le tabelle con rilevamento, il numero di colonne disponibili è 1017, ovvero 1024 meno sette colonne di sistema. Queste sette colonne di sistema sono protette e utilizzate per le tabelle RDA con rilevamento.
- Colonne calcolate. Il metodo Pull non riesce se il set di record contiene colonne calcolate.
- Colonne IDENTITY. Se si utilizzano le colonne IDENTITY per generare univocità, tali colonne non vengono gestite dinamicamente da RDA. I valori iniziali predefiniti di inizializzazione e di incremento per una colonna IDENTITY sul dispositivo sono sempre seed=1, increment=1. SQL Server Compact Edition consente di modificare i valori SEED e INCREMENT Identity nella tabella di database locale utilizzando l'istruzione ALTER TABLE, in modo da gestire manualmente l'intervallo di valori Identity per ogni dispositivo. Sarà necessario determinare il valore IDENTITY maggiore e regolare il valore di inizializzazione prima di tentare qualsiasi inserimento nella tabella. Se, ad esempio, si determina che il valore IDENTITY più elevato è 99, utilizzare ALTER TABLE Orders ALTER COLUMN OrderId IDENTITY (100,1) per reimpostare il successivo valore IDENTITY su 100.
Limitazioni dello schema
SQL Server Compact Edition consente di tenere traccia delle modifiche alla tabella di SQL Server Compact Edition risultante. Specificando l'opzione di rilevamento appropriata, in SQL Server Compact Edition è possibile tenere traccia di tutti gli inserimenti, gli aggiornamenti e le eliminazioni eseguiti nella tabella locale di SQL Server Compact Edition. L'applicazione è quindi in grado di chiamare il metodo Push per propagare queste modifiche alla tabella originale di SQL Server.
I metodi RDA Pull e Push con rilevamento utilizzano il controllo di concorrenza ottimistica. SQL Server non tiene bloccati i record di cui è stato eseguito il pull. Quando l'applicazione chiama il metodo Push, le modifiche apportate al database locale di SQL Server Compact Edition vengono pertanto applicate incondizionatamente al database di SQL Server. Ciò potrebbe causare la perdita delle modifiche apportate da altri utenti del database di SQL Server.
Utilizzare i metodi Pulle Push con rilevamento quando i record che si sta aggiornando sono partizionati in modo logico e i conflitti non sono probabili. I metodi Pull e Push con rilevamento, ad esempio, potrebbero essere utilizzati in un'applicazione di servizio che consente di tenere traccia di ogni tecnico che disponga di un elenco univoco di chiamate di assistenza.
In una tabella di SQL Server Compact Edition creata con un metodo Pull con rilevamento è possibile apportare le modifiche allo schema seguenti:
- Modificare il valore di inizializzazione o l'incremento della colonna Identity.
- Aggiungere o eliminare vincoli DEFAULT.
- Aggiungere o eliminare chiavi esterne.
- Aggiungere o eliminare indici.
- Eliminare la tabella.
Mentre è ancora in corso l'elaborazione di un metodo Pull con rilevamento, in una tabella di SQL Server non è possibile apportare alcuna delle modifiche allo schema seguenti:
- Aggiungere, eliminare o rinominare colonne.
- Rinominare la tabella.
- Eliminare una chiave primaria.
- Modificare una definizione del tipo di dati.
Per apportare queste modifiche allo schema della tabella di SQL Server, è necessario eliminare la tabella di SQL Server Compact Edition ed eseguire nuovamente il pull della tabella di SQL Server modificata.