views:

1290

answers:

8

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.
+1  A: 

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
You cant use dynamically attached .mdf files with multiple users distributed across different locaions.
Mitchel Sellers
+1  A: 

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

Jacob T. Nielsen
+1  A: 

@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
Did you read the original requirements? SQL Express doesn't meet the copying requirement. Of course, neither does Jet.
David-W-Fenton
@david.w.fenton: did you actually read all of my answer and see the bit about "deal breaker"?
Kev
A: 

Agreeing with @Orion and @Ken. This may help you on your copy db requirement.

jms
+1  A: 

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.

hectorsosajr
+2  A: 
  • 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  A: 

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
+4  A: 

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.

Heinzi