有没有可能转发 access 的 mdb 文件访问请求?

2023-05-25 16:30:44 +08:00
 jstony

一般来说访问 mdb 内容都是用 microsoft jet oledb ,我有个上古的软件,源码肯定没有,有没有可能将微软 jet 引擎对 mdb 文件的访问转发,这样我就可以将数据库放在网络上,甚至可以将 mdb 的库用 mysql 或者 mssql 来代替。

901 次点击
所在节点    数据库
9 条回复
ysc3839
2023-05-25 16:57:03 +08:00
oledb 好像是可以实现第三方 provider 的吧?好像只需要改一下连接字符串就能换掉,其他应该是一致的,用这个方案的话要实现的 hook 点就只有传连接字符串的那个函数。
还有方案就是把 oledb 所有函数都 hook 一遍,但这么做工作量太大,稳定性也难说。
如果只是想把文件放在远程的话,直接用 smb 等网络文件系统即可。
jstony
2023-05-25 17:17:09 +08:00
@ysc3839 现在 mdb 文件已经通过 smb 共享放在 nas 上了,就是还想看看有没有更好的办法,你提到的是一个思路,如果可以自己编译一个第三方 provider ,然后注册到系统里,冒充微软的 jet 引擎可能是一个可行的方法。
ysc3839
2023-05-25 17:19:38 +08:00
@jstony 没有对接其他数据库需求的话,smb 基本上是最稳妥的方法了
yinmin
2023-05-25 18:59:07 +08:00
mdb 的 sql 是有自己的格式,不兼容其他 sql
ttvast
2023-05-26 04:23:21 +08:00
access 可以将一个 sql server 的表链接成自己的表
jstony
2023-05-26 09:24:51 +08:00
@ttvast 感谢,这个是我从来没想到过的一个思路,我去研究一下,可行的话可能是最简单的办法。
jstony
2023-05-26 09:25:53 +08:00
@yinmin 我不需要了解 mdb 的具体实现,我只需要将标准的 oledb 的请求转发就行了。
yinmin
2023-05-26 10:02:54 +08:00
#7 mdb 使用的 sql 语法是很怪异的,例如:select 语句就与其它的数据库很不同。通过 OLEDB 转发后还需要一个转换层,将 ACCESS 的 SQL 语法转换成其它数据库的 SQL 语法。你可以找找有没有这种软件。
jstony
2023-05-26 16:23:02 +08:00
@ttvast 感谢你的方案,已经测试成功,现在把数据同步过来就可以正常用了。单机软件秒变网络版😀

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/942915

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX