首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >是否可以直接在ODBC连接字符串中指定驱动程序dll?

是否可以直接在ODBC连接字符串中指定驱动程序dll?
EN

Stack Overflow用户
提问于 2016-10-26 13:06:53
回答 2查看 1.9K关注 0票数 7

我正在尝试使用pyodbc连接到可移植应用程序中的Server (MS通过FreeTDS);由于它应该是独立的,所以我希望避免在系统上显式安装驱动程序,只需在应用程序中带ODBC。

此页建议可以直接在连接字符串中指定驱动程序dll

  • DRIVER=函数的szConnStrIn参数中指定SQLDriverConnect参数。例如: szConnStrIn = "driver=ospath/dbodbc6.dll;dbf=c:\asademo.db“ 其中,ospath是Anywhere安装目录的操作系统子目录。

通过Linux上的pyodbc+libtdsodbc.so来尝试它,它确实工作得很好;但是,在Windows (pyodbc+tdsodbc.dll)上尝试相同的操作总是会得到的

pyodbc.Error:(‘no 002’,‘未找到IM002ODBC驱动程序管理器数据源名称,也没有指定默认驱动程序(0) (SQLDriverConnect)')

(不过,我的libtdsodbc.so似乎很好,因为如果我将它作为“常规”驱动程序安装,并将其命名为它的名称,则连接良好)

检查SQLDriverConnect和相关页面时,没有提到与dll路径直接使用的DRIVER=选项。

那么,Windows不支持“直接到驱动程序dll”连接吗?是否有其他选择,特别是Python,可以绕过ODBC驱动程序管理器直接连接到驱动程序dll?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2020-10-23 15:49:30

TallTed的答案提到的一样,您所链接的文档包含了相当多的信息(但可能当时并不存在),而且它也明确说明了driver参数的含义:

SQLDrivers函数返回的驱动程序描述。例如,Rdb或Server。

因此,指出Windows中的路径(至少使用默认ODBC实现)是无效的。

在一般情况下,不注册ODBC驱动程序也是不可能的,这需要管理员权限。这个答案列出了一些选项。

票数 1
EN

Stack Overflow用户

发布于 2019-02-25 14:43:41

现在,也就是2.5年后,很可能无法解决这个问题,但我的最佳猜测是未注册libtdsodbc.so上的错误或权限错误,或者您的SQLDriverConnect()调用中的其他错误(您没有提供这些错误,因此无法进行分析)。

我想你一定没有仔细或完整地读过SQLDriverConnect(),因为它是SQLDriverConnect() --

empty-string ::=attribute ::= attribute-keyword=attribute-value | DRIVER=[{]attribute-value[}]

-和在“注释”一节的详细内容中对此进行了进一步讨论。

请注意,这并不是“绕过ODBC驱动程序管理器”,尽管它确实可以减少odbc.ini的连接(因此不引用odbc.ini注册表树,也不引用其他操作系统上的odbc.ini文件)。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/40263138

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档