Microsoft Jet的64位替代
Microsoft选择不发布其Access的数据库驱动程序Jet的64位版本。有谁知道一个好的选择?
这是我需要Jet支持的特定功能:
- 多个用户可以通过网络连接到数据库。
- 用户可以使用Windows资源管理器在数据库打开时复制它,而不必担心会损坏。 Access目前可以满足我的客户的需求,并且具有足够的可靠性。
- 不需要.Net即可在C ++中很好地工作。
我认为我认为不可行的替代方法(尽管我的理解可能不正确):
- SQLite:如果多个用户通过网络连接到数据库,它将损坏。
- Firebird:复制正在使用的数据库可能会破坏原始数据库。
- SQL Server:正在使用的文件已锁定,无法复制。
- VistaDB:这似乎是.Net特定的。
- 使用32位编译并使用WOW64:还有一个依赖关系,即使我们不使用任何64位功能,也需要我们使用64位编译。
解决方案
我们正在寻找的是带有可移植.mdf文件的SQL Server Express。要解决复制限制,我们需要确保所讨论的软件没有保持连接打开(即,创建断开连接的数据访问层)。
尝试看看http://www.vistadb.net/
@Orion:同意,建议OP与SQL 2005 Express一起使用(如果可能的话)。交易破坏者能够在使用/添加时复制数据库,而SQL却没有使用这种备份工具,而无需使用某种可以复制"使用中"文件的备份工具。
另一种方法是自动备份并还原到漫游机,但这与仅获取文件的副本还有很长的路要走。
我们可以查看的另一种选择是SQL Server Compact Edition(CE)。我相信它具有64位二进制文件。
对于复制数据库,我也同意Orion和Kev的观点。
- 用户可以在数据库打开时复制它,而不会冒损坏的风险。
我们不能使用具有多个用户和/或者进程对其进行修改的任何数据库文件来执行此操作。
我要做的是创建一个单独的32位可执行文件,该可执行文件连接到Jet,我的64位应用程序可以通过COM与之通信。
这满足了我对"像Jet之类的作品"的一般要求,因为它就是Jet。我的客户没有从64位中受益,但其他要求则更为重要。
幸运的是,过去两年中情况发生了变化:
由于Office 2010提供64位版本,因此Microsoft必须创建其Jet Engine的64位版本。根据Microsoft客户服务博客,Microsoft Access数据库引擎2010可再发行组件包含64位驱动程序,该驱动程序能够访问Microsoft Access数据库格式的最新版本。