3

Microsoft has chosen to not release a 64-bit version of Jet, their database driver for Access. Does anyone know of a good alternative?

Here are the specific features that Jet supports that I need:

  • Multiple users can connect to database over a network.
  • Users can use Windows Explorer to copy the database while it is open without risking corruption. Access currently does this with enough reliability for what my customers need.
  • Works well in C++ without requiring .Net.

Alternatives I've considered that I do not think could work (though my understanding could be incorrect):

  • SQLite: If multiple users connect to the database over a network, it will become corrupted.
  • Firebird: Copying a database that is in use can corrupt the original database.
  • SQL Server: Files in use are locked and cannot be copied.
  • VistaDB: This appears to be .Net specific.
  • Compile in 32-bit and use WOW64: There is another dependency that requires us to compile in 64-bit, even though we don't use any 64-bit functionality.
Oli
  • 235,628
  • 64
  • 220
  • 299
David Robison
  • 623
  • 1
  • 10
  • 25
  • What is the motivation for the copying requirement? – Cade Roux Sep 23 '08 at 17:51
  • if your aplication doesn't need any 64-bit functionality, you can compile for x86 and then all the jet providers will work. – Darren Kopp Sep 23 '08 at 17:57
  • Incredible! People are so in a hurry to post an answer! I do not understand for example what means "copy the database": copy tables? records? what for? what are the users going to do with them? Are these going to be updated by the user before "copying the database" again? Please be more explicit. – Philippe Grondier Sep 23 '08 at 19:46
  • @Philippe: Read the question - "Users can use Windows Explorer to copy the database while it is open..." – Kev Sep 24 '08 at 21:10
  • It's never at all a good idea to copy a Jet database through Windows Explorer, or any other method but Jet itself. It may work 99% of the time, but that other 1% will give you a corrupted or inconsistent result. – David-W-Fenton Sep 24 '08 at 21:47

7 Answers7

12

Luckily, things have changed in the past two years:

Since Office 2010 is available in a 64-bit version, Microsoft had to create a 64-bit version of their Jet Engine. According to the Microsoft Customer Service blog, the Microsoft Access Database Engine 2010 Redistributable contains a 64-bit driver, which is able to access recent versions of the Microsoft Access database format.

Glorfindel
  • 21,988
  • 13
  • 81
  • 109
Heinzi
  • 167,459
  • 57
  • 363
  • 519
2
  • Users can copy the database while it is open without risking corruption.

You can't do that with any database file with multiple users and/or processes modifying it.

1

What you're looking for is SQL Server Express with the portable .mdf files. To get around the copying limitation you need to make sure that the software in question doesn't keep connections open (i.e. create a disconnected data access layer).

Orion Adrian
  • 19,053
  • 13
  • 51
  • 67
1

Try to have a look at http://www.vistadb.net/

Community
  • 1
  • 1
Jacob T. Nielsen
  • 2,938
  • 6
  • 26
  • 30
1

@Orion: Agreed, OP would be advised to go with SQL 2005 Express (if possible). The deal breaker is being able to copy the DB while in use/attached which is out of the question with SQL without using some kind of backup tool that can copy 'in use' files.

Another way would be to automate a backup and restore to roaming machine but this is getting a long way away from being able to just grab a copy of the file.

Kev
  • 118,037
  • 53
  • 300
  • 385
  • Did you read the original requirements? SQL Express doesn't meet the copying requirement. Of course, neither does Jet. – David-W-Fenton Sep 24 '08 at 21:48
  • @david.w.fenton: did you actually read all of my answer and see the bit about "deal breaker"? – Kev Sep 24 '08 at 21:51
1

Another alternative you can look at is SQL Server Compact Edition (CE). I believe this has 64bit binaries.

I also agree with Orion and Kev about the copying the database.

Hector Sosa Jr
  • 4,230
  • 27
  • 30
1

What I am going to do is to create a separate 32-bit executable that connects to Jet that my 64-bit application can communicate with through COM.

This satisfies my general requirement of "work like Jet", because it is Jet. My customers don't get the benefit of 64-bit, but the other requirements are more important.

David Robison
  • 623
  • 1
  • 10
  • 25