2010-01-02 15 views
12

Sto cercando di utilizzare SQL Server Compact Edition 3.5 come back-end del database per un'applicazione di vendita. Ci sarebbero 3-4 installazioni di un'applicazione Windows Form che permetterebbero a tutti (tramite LINQ2SQL) di leggere e scrivere su un file .sdf che si trova su una condivisione di rete.SQL Server CE in uno scenario multiutente: è davvero stupido?

Il mio test (piuttosto inestensivo) ha dimostrato che questo potrebbe essere valido. Documentation indica che SQL Server CE supporta fino a 256 connessioni. Does SQL Server CE even lock its rows? Ci sono altri problemi di concorrenza di cui dovrei preoccuparmi?

In conclusione, qualcuno ha mai utilizzato SQL Server CE con più applicazioni che si collegano allo stesso database?

Devo risparmiarmi futuri mal di testa e andare con SQL Server Express?

risposta

14

MS raccomanda (dal di Darian Miller comparison guide):

Quando si richiede il servizio dati funzionalità, come ad esempio il multiplo capacità di supporto, gli utenti remoti, è dovrebbe iniziare con SQL Server Express Edition e elaborare il servizio dati albero genealogico.

il runtime supporta la concorrenza sulla stessa macchina, non è sicuro su più macchine che accedono al file. nel caso in cui il file sia memorizzato su una condivisione di rete, potrebbe non adattarsi al profilo di prestazione ottimale per ce. direi di andare con EE, è un istante da installare con un semplice MSI.

SSCE Concurrency:

SSCE consente a più connessioni a stesso database (file sdf) dal stessa applicazione o anche più applicazioni sullo stesso computer. Questo ti dà più libertà di struttura la vostra applicazione, se necessario, come ad esempio consentendo all'utente di continuare di interagire con i dati durante l'esecuzione sincronizzazione con un back-end del database, o di avere più applicazioni sullo stesso quota di macchina un archivio dati SSCE. I blocchi di concorrenza transazionali vengono creati dal motore di database per impedire che le connessioni simultanee di accedano allo stesso numero di record allo stesso tempo. Il limite tecnico di per un singolo database è 256, ma 70-80 è un limite pratico migliore dal punto di vista delle prestazioni.

http://technet.microsoft.com/en-us/library/bb380177%28SQL.90%29.aspx

+0

Informazioni molto utili, grazie! –

0

Direi che avrete meno mal di testa con SQL finché si esegue tutto su una macchina. Installare l'edizione Express su tutti i computer su cui è in esecuzione la tua app non è buono, ingombrante e probabilmente eccessivo.

+0

Bene, l'idea è di avere solo un database e 3 - 4 client, quindi dovrei installare solo Express una sola volta (per cliente). – Edo

+0

Penso di aver letto male la tua domanda. Se l'applicazione è collocata su più macchine e devi mettere il db su una condivisione di rete, probabilmente andrei con SQL Express. – user227997

Problemi correlati