微软Jet的64位替代品

问题描述:

微软已经选择不发布Jet的64位版本,他们的Access数据库驱动程序。有谁知道一个很好的选择?微软Jet的64位替代品

下面是喷气支持我需要的特定功能:

  • 多个用户可以通过网络连接到数据库。
  • 用户可以使用Windows资源管理器在打开数据库时复制数据库而不会冒任何损坏风险。 Access目前为我的客户提供了足够的可靠性。
  • 无需使用.Net即可在C++中正常工作。

替代品,我认为,我不认为可以工作(虽然我的理解可能是不正确的):

  • SQLite的:如果多个用户通过网络连接到数据库,它将成为损坏。
  • Firebird:复制正在使用的数据库可能会破坏原始数据库。
  • SQL Server:正在使用的文件被锁定,无法复制。
  • VistaDB:这似乎是.Net特定的。
  • 编译为32位并使用WOW64:另一个依赖项要求我们在64位编译,即使我们不使用任何64位功能。
+0

复制要求的动机是什么? – 2008-09-23 17:51:08

+0

如果你的应用程序不需要任何64位功能,你可以编译x86,然后所有的喷气机提供商将工作。 – 2008-09-23 17:57:20

+0

不可思议!人们急于发布答案!例如,我不明白什么意思是“复制数据库”:复制表?记录?做什么的?用户将如何处理它们?这些将在“复制数据库”之前由用户更新吗?请更加明确。 – 2008-09-23 19:46:56

幸运的是,事情已经过去两年变化:

由于Office 2010中的64位版本,微软不得不建立自己的喷气发动机的64位版本。根据Microsoft Customer Service blogMicrosoft Access Database Engine 2010 Redistributable包含一个64位驱动程序,它能够访问最新版本的Microsoft Access数据库格式。

您正在寻找的是带有便携式.mdf文件的SQL Server Express。要避开复制限制,您需要确保相关软件不会保持连接打开(即创建断开的数据访问层)。

@Orion:同意,OP会建议去与2005年的SQL Express(如果可能)。交易断路器能够在使用/附加数据库时复制数据库,这与SQL无关,而无需使用某种可以复制“使用中”文件的备份工具。

另一种方法是将备份和恢复自动化到漫游机器上,但这远离能够获取文件副本的很长一段路要走。

另一种可供选择的方法是SQL Server Compact Edition(CE)。我相信这有64位二进制文​​件。

我也同意Orion和Kev关于复制数据库的说法。

  • 用户可以在打开数据库的同时复制数据库,而不会冒任何损坏风险。

你不能这样做与任何数据库文件与多个用户和/或进程修改它。

我要做的是创建一个单独的32位可执行文件,它连接到Jet,我的64位应用程序可以通过COM进行通信。

这满足了我对“像Jet一样工作”的一般要求,因为它是Jet。我的客户没有获得64位的好处,但其他要求更重要。