Alternativa a 64 bit per Microsoft Jet
Domanda
Microsoft ha scelto di non rilasciare una versione a 64 bit di Jet, il suo driver di database per Access. Qualcuno sa di una buona alternativa?
Ecco le caratteristiche specifiche che Jet supporta di cui ho bisogno:
- Più utenti possono connettersi al database su una rete.
- Gli utenti possono utilizzare Esplora risorse per copiare il database mentre è aperto senza rischiare la corruzione. Access attualmente lo fa con sufficiente affidabilità per ciò di cui i miei clienti hanno bisogno.
- Funziona bene in C ++ senza richiedere .Net.
Alternative Ho considerato che non credo potesse funzionare (anche se la mia comprensione potrebbe essere errata):
- SQLite: se più utenti si connettono al database su una rete, verrà danneggiato.
- Firebird: la copia di un database in uso può danneggiare il database originale.
- SQL Server: i file in uso sono bloccati e non possono essere copiati.
- VistaDB: questo sembra essere .Net specifico.
- Compila in 32 bit e usa WOW64: esiste un'altra dipendenza che ci richiede di compilare in 64 bit, anche se non utilizziamo alcuna funzionalità a 64 bit.
Soluzione
Fortunatamente, le cose sono cambiate negli ultimi due anni:
Poiché Office 2010 è disponibile in una versione a 64 bit, Microsoft ha dovuto creare una versione a 64 bit del proprio Jet Engine. Secondo Blog del servizio clienti Microsoft , il Motore di database di Microsoft Access 2010 ridistribuibile contiene un driver a 64 bit, in grado di accedere alle versioni recenti del formato del database di Microsoft Access.
Altri suggerimenti
- Gli utenti possono copiare il database mentre è aperto senza rischiare di corrompere.
Non puoi farlo con qualsiasi file di database con più utenti e / o processi che lo modificano.
Quello che stai cercando è SQL Server Express con i file .mdf portatili. Per aggirare la limitazione della copia è necessario assicurarsi che il software in questione non mantenga aperte le connessioni (ovvero creare un livello di accesso ai dati disconnesso).
Prova a dare un'occhiata a http://www.vistadb.net/
@Orion: concordato, OP sarebbe consigliato di utilizzare SQL 2005 Express (se possibile). L'interruzione della transazione è in grado di copiare il DB mentre è in uso / collegato, il che è fuori discussione con SQL senza utilizzare alcun tipo di strumento di backup in grado di copiare i file "in uso".
Un altro modo sarebbe quello di automatizzare un backup e ripristinarlo su una macchina in roaming, ma questo è molto lontano dall'essere in grado di prendere una copia del file.
Un'altra alternativa che puoi consultare è SQL Server Compact Edition (CE). Credo che questo abbia binari a 64 bit.
Concordo anche con Orion e Kev sulla copia del database.
Quello che sto per fare è creare un eseguibile a 32 bit separato che si connette a Jet con cui la mia applicazione a 64 bit può comunicare tramite COM.
Questo soddisfa il mio requisito generale di "lavorare come Jet", perché è Jet. I miei clienti non ottengono il vantaggio di 64 bit, ma gli altri requisiti sono più importanti.