Limitazioni di RDA
In Microsoft SQL Server Compact 3.5 (SQL Server Compact 3.5) esistono limitazioni per RDA nelle aree seguenti:
- Distinzione tra maiuscole e minuscole. A partire dalla versione SQL Server Compact 3.5 Service Pack 1, in SQL Server Compact è supportata l'impostazione delle regole di confronto con distinzione tra maiuscole e minuscole a livello di database. In un database di SQL Server Compact ai nomi degli oggetti, ad esempio i nomi delle tabelle, le parole chiave del linguaggio, le funzioni e le viste, non viene applicata la distinzione tra maiuscole e minuscole, anche se le regole di confronto rispettano tale distinzione.
In un database di SQL Server Compact gli oggetti vengono trattati in modo diverso rispetto a un database di SQL Server. In un database di SQL Server che fa distinzione tra maiuscole e minuscole, ad esempio, le due tabelle MYTABLE e mytable vengono trattate come oggetti diversi. In un database di SQL Server Compact si verificherà un conflitto di denominazione in quanto le due tabelle hanno lo stesso nome. Viceversa, i due valori MYVALUE e myvalue non provocano più una violazione della chiave primaria in SQL Server Compact poiché vengono trattati come valori diversi. Tali valori non provocano inoltre una violazione in un database SQL Server con 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 3.5 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 recordset 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 3.5 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 3.5 consente di tenere traccia delle modifiche alla tabella di SQL Server Compact 3.5 risultante. Specificando l'opzione di rilevamento appropriata, in SQL Server Compact 3.5 è possibile tenere traccia di tutti gli inserimenti, gli aggiornamenti e le eliminazioni eseguiti nella tabella locale di SQL Server Compact 3.5. 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 3.5 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 3.5 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 3.5 ed eseguire nuovamente il pull della tabella di SQL Server modificata.