问题标签 [tdsodbc]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
600 浏览

ubuntu - 找不到包 tsodbc

我正在尝试按照django-pyodbc wiki中的说明安装 FreeTDS 。但是最后一个包安装失败:

0 投票
2 回答
7738 浏览

sql-server - FreeTDS:用户登录失败

我正在尝试使用 FreeTDS 连接到 MSSQL 2005 服务器。

但我收到“用户登录失败”错误。FreeTDS手册中有一个部分故障排除部分但它没有提到任何与之相关的可能错误。我的 tsql 连接字符串有问题吗?还是在 MSSQL 端配置错误?

我能够使用相同的凭据连接到 SQL Server 管理。

这就是我正在使用的输出(我已经删除了 ipnumber 和用户名):

还有我的编译时间设置:

我在 Ubuntu 12.04 上,我像这样安装了 FreeTDS:

0 投票
1 回答
311 浏览

ld - SQLAPI++:获取可执行文件加载的共享库的路径

SQLAPI++ 有一个不寻常的功能,您可以设置一个字符串来告诉它在哪里可以找到 ODBC 共享库。就我而言,这是libtdsodbc.so,我的应用程序实际上在构建时链接了该库,但在运行时这还不足以让 SQLAPI++ 工作。

我的代码是:

ODBC.LIBS记录如下:

强制 SQLAPI++ 库使用指定的 ODBC 管理器库。

如果您设置LD_LIBRARY_PATH为包含libtdsodbc.so. 但如果你不这样做,Connect()失败:

如果您设置ODBC.LIBS为完整路径而不仅仅是文件名,它会再次起作用。但是应用程序怎么知道是哪条路径呢?

我的应用程序(在 SQLAPI++ 之外)是libtdsodbc.so通过它RUNPATH在构建时设置的。此路径不是系统路径,如/usr/lib. 我想让 SQLAPI++ 使用在运行时加载到应用程序中的相同库。

一种想法是让应用程序检查自己的RUNPATH、搜索libtdsobc.so和使用该路径。但这需要相当多的繁琐代码才能从根本上重新实现ld.so已经完成的工作。

我不想在构建时将路径与可执行文件分开烘焙RUNPATH,因为我有时会RUNPATH在部署之前进行编辑(然后我需要编辑两件事)。

理想情况下,我想告诉 SQLAPI++ 只使用已经加载的库。我可以通过运行来找出这条路径,lsof -p PID | grep libtdsodbc.so但从可执行文件中运行 shell 命令不是一个好的解决方案(我也不想重新实现lsof)。