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.
È stato utile?

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.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top