最近我接到一个任务,要开发一个 PHP 应用程序,用于连接远程 ODBC 驱动程序。我们获取了 ODBC 驱动程序并设置了一个测试环境。
因为这是我第一次使用 ODBC 驱动程序,所以我不知道该怎么做才能连接到驱动程序。我知道代码,并且能够使用 PHP 和本地计算机上的 DSN 连接到 ODBC 驱动程序。但由于我必须使用无 DSN 的连接从远程计算机进行连接,所以我认为这不再那么容易了。
ODBC 驱动程序是定制的(PARKWAY ConnectWare for Micro Focus Files),我们没有得到它的文档(只有连接字符串参数描述,这很有帮助,但不足以解决我们的问题)。谷歌搜索也没有帮助,我们什么也没找到。
有人知道您还需要什么才能远程连接到 ODBC 驱动程序吗?从逻辑上讲,只有驱动程序是不够的,也许还需要某种服务器...
我将非常感激任何朝着正确方向的推动:)
更新:
PARKWAY 支持人员向我提供了连接字符串和基本信息。我的第一直觉是正确的——为了能够连接到远程计算机上的 ODBC 驱动程序,我需要他们的服务器应用程序。我已经安装了他们的服务器评估版,今天会稍微试用一下。他们建议的连接字符串是:
Driver=PARKWAY ConnectWare for Micro Focus Files;DBQ=D:\MyServerData;Layout=Version3;FileType=Micro Focus;Location=MyServer
这次尝试连接时我确实遇到了不同的错误:
SQL error: Failed to fetch error message
但我认为这是一个代码问题。
答案1
感谢所有有用的评论,我终于明白了:)
如果有人遇到类似的问题,以下是我解决的方法:
首先我联系了支持人员。如果你遇到了一个不常见的软件问题,那么联系支持人员通常是你应该采取的第一步。他们通常有正确的答案。
顾名思义,ODBC 驱动程序就是一个驱动程序,仅此而已。对于任何类型的远程访问,您都需要某种服务器。此外,如果您想访问远程数据源,您需要在客户端计算机(将运行远程应用程序的计算机)上安装驱动程序。
到目前为止一切顺利。就我而言,我从他们的支持人员那里获得了连接参数描述,但仍然无法弄清楚连接字符串是什么样子的。我尝试了所有方法,但都不起作用(我得到了奇怪的错误,这些错误没有什么帮助,比如“无法获取错误消息”)。
最终我在这篇文章中找到了答案:dsn 到连接字符串
看起来 DSN 记录只不过是名称-值对。使用 DSN 连接到数据源是可行的,但我无法在我的特定情况下使用 DSN。因此,我通过打开 REGEDIT 并按照上述帖子的建议打开系统 DSN 位置来获取所需的参数:
HKLM\Software\Wow6432Node\ODBC\ODBC.INI\
这是存储 32 位系统 DSN 记录的位置。如果您需要查找 64 位版本,则位于此处:
HKLM\Software\ODBC\ODBC.INI\
果然,我需要的系统 DSN 出现了。如果有人感兴趣为什么我还是不知道连接字符串是什么样子的,尽管我有连接字符串参数描述:
为了能够连接到远程服务器,我必须在连接字符串中添加“位置”参数。我尝试添加服务器计算机的 URL 和/或 IP,但没有成功。通过查看注册表,我发现我实际上必须将 IP、端口和协议添加到特定于此 ODBC 驱动程序的配置文件中。对于连接字符串中的“位置”属性,我必须指定我添加的配置的名称。