V2EX = way to explore
V2EX 是一个关于分享和探索的地方
Sign Up Now
For Existing Member  Sign In
minibear2021
V2EX  ›  数据库

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

  •  
  •   minibear2021 · May 25, 2023 · 1370 views
    This topic created in 1069 days ago, the information mentioned may be changed or developed.

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

    9 replies    2023-05-26 16:23:02 +08:00
    ysc3839
        1
    ysc3839  
       May 25, 2023 via Android
    oledb 好像是可以实现第三方 provider 的吧?好像只需要改一下连接字符串就能换掉,其他应该是一致的,用这个方案的话要实现的 hook 点就只有传连接字符串的那个函数。
    还有方案就是把 oledb 所有函数都 hook 一遍,但这么做工作量太大,稳定性也难说。
    如果只是想把文件放在远程的话,直接用 smb 等网络文件系统即可。
    minibear2021
        2
    minibear2021  
    OP
       May 25, 2023
    @ysc3839 现在 mdb 文件已经通过 smb 共享放在 nas 上了,就是还想看看有没有更好的办法,你提到的是一个思路,如果可以自己编译一个第三方 provider ,然后注册到系统里,冒充微软的 jet 引擎可能是一个可行的方法。
    ysc3839
        3
    ysc3839  
       May 25, 2023 via Android
    @jstony 没有对接其他数据库需求的话,smb 基本上是最稳妥的方法了
    yinmin
        4
    yinmin  
       May 25, 2023 via iPhone
    mdb 的 sql 是有自己的格式,不兼容其他 sql
    ttvast
        5
    ttvast  
       May 26, 2023 via iPad   ❤️ 2
    access 可以将一个 sql server 的表链接成自己的表
    minibear2021
        6
    minibear2021  
    OP
       May 26, 2023
    @ttvast 感谢,这个是我从来没想到过的一个思路,我去研究一下,可行的话可能是最简单的办法。
    minibear2021
        7
    minibear2021  
    OP
       May 26, 2023
    @yinmin 我不需要了解 mdb 的具体实现,我只需要将标准的 oledb 的请求转发就行了。
    yinmin
        8
    yinmin  
       May 26, 2023
    #7 mdb 使用的 sql 语法是很怪异的,例如:select 语句就与其它的数据库很不同。通过 OLEDB 转发后还需要一个转换层,将 ACCESS 的 SQL 语法转换成其它数据库的 SQL 语法。你可以找找有没有这种软件。
    minibear2021
        9
    minibear2021  
    OP
       May 26, 2023
    @ttvast 感谢你的方案,已经测试成功,现在把数据同步过来就可以正常用了。单机软件秒变网络版😀
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   3105 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 36ms · UTC 14:43 · PVG 22:43 · LAX 07:43 · JFK 10:43
    ♥ Do have faith in what you're doing.