Condividi tramite


Accesso multiutente e RDA

L'accesso multiutente in Microsoft SQL Server Compact 3.5 (SQL Server Compact 3.5) è sempre disponibile, anche quando si utilizza RDA (Remote Data Access). È quindi possibile che nel corso di un'operazione pull o push un altro utente acceda allo stesso database di SQL Server Compact 3.5.

Poiché un'operazione pull richiede che non sia presente la tabella locale specifica durante il pull e poiché la tabella viene creata durante il processo di pull dei dati dal server, non è possibile accedere alla tabella della quale viene eseguito il pull fino al termine dell'operazione stessa. Quando viene eseguito il push dei dati al server, se le modifiche ai dati vengono apportate dopo l'avvio del push, tali modifiche verranno inviate al server alla successiva operazione di push. Se i dati del server richiedono l'aggiornamento dopo una determinata operazione di push al server, l'applicazione non consente ulteriori modifiche alla tabella fino al termine di entrambe le operazioni di push e pull. Ciò assicura che le modifiche non andranno perdute al momento dell'eliminazione della tabella.

Consentendo a più connessioni di accedere al database di SQL Server Compact 3.5 si rende disponibile agli sviluppatori un modello di sviluppo più semplice. Il motore di database di SQL Server Compact 3.5 gestisce infatti richieste provenienti da più applicazioni oppure più richieste di connessione provenienti da una sola applicazione, quindi non è necessario che gli sviluppatori pianifichino gli accessi al database. Quando vengono richieste più connessioni, il motore di database di SQL Server Compact 3.5 blocca i dati secondo le necessità delle specifiche operazioni.

Nota

Alcuni scenari relativi a piattaforme a 64 bit non supportano l'accesso simultaneo a un file di database con versioni precedenti di SQL Server Compact. Per informazioni sui componenti a 64 bit, vedere Gestione di applicazioni di database a 64 bit.

Modifica della chiave primaria durante la sincronizzazione

Per una tabella con rilevamento RDA, gli aggiornamenti, gli inserimenti e le eliminazioni vengono rilevati in base alla chiave primaria. A causa della possibilità di accesso multiutente alle colonne di chiave primaria, è importante che i valori della colonna di chiave primaria non vengano modificati durante la sincronizzazione.

Avviso   La modifica di un valore nelle colonne di chiave primaria, benché rara, potrebbe causare errori e perdite di dati se si verifica durante la sincronizzazione di una tabella nella quale è stata modificata la chiave primaria.

Esempio

Nella tabella A, un valore di chiave primaria viene modificato da 1 a 2. Il valore 1 è stato archiviato in una colonna di rilevamento utilizzata da RDA, in modo che, quando si verifica un push, in SQL Server Compact 3.5 venga utilizzato il valore corretto per i criteri di ricerca durante l'aggiornamento dei dati al nuovo valore.

L'applicazione avvia l'operazione di push e il nuovo valore di 2 viene inviato nel messaggio di caricamento al database di SQL Server con il valore di ricerca di 1. Se il nuovo valore, tuttavia, viene modificato durante la sincronizzazione, la colonna di rilevamento non modificherà il valore di ricerca da 1 a 2 perché il push non è ancora completato. Dopo il buon esito del push, l'operazione di push successiva per la riga avrà sempre esito negativo. Il criterio di ricerca di 1 non è più valido perché il valore di chiave primaria è stato modificato da 1 a 2 a livello del server.

Per ulteriori informazioni sull'accesso multiutente, vedere Accesso multiutente. Per ulteriori informazioni sul blocco, vedere Blocco (SQL Server Compact).