1

我花了最后一两天在 ubuntu 12 上设置 unixODBC 和 freetds - 这本身不是一个有趣的过程,但它现在可以同时使用 sqsh 和 isql。我已经安装了 node-odbc 并且我正在使用github 自述文件中提供的代码片段来测试连接,但我总是得到

 S1000:1:0:[unixODBC][FreeTDS][SQL Server]Unable to connect to data source
 WARNING: ev_unref is deprecated, use uv_unref
 [Error: Error opening database]

使用 isql 我运行isql -v SERVER user pass(使用正确的凭据..),然后use DATABASE一旦连接,一切正常,我可以正常运行查询。我在 js 中的连接字符串是

 "DRIVER={FreeTDS};SERVER=SERVER;UID=user;PWD=pass;DATABASE=DATABASE"

这与用于连接 isql 的凭据完全匹配,但在 Node 中我得到了上述错误。关于为什么会发生这种情况的任何想法?是否有可能做我的 odbc.ini 和 odbcinst.ini 文件的位置或类似的东西?

仅供参考:

/etc/odbc.ini:

[SERVER]
Driver      = FreeTDS
Trace       = No
Server      = SERVER
Port        = 1433
Database    = DATABASE
UsageCount  = 1
TDS_Version = 7.0

/etc/odbcinst.ini:

[FreeTDS]
Description = FreeTDS
Driver = /usr/lib/libtdsodbc.so
Setup = /usr/lib/libtdsS.so
FileUsage   = 1
CPTimeout   = 5
CPReuse     = 20
Threading   = 1

提前感谢您的帮助!

4

2 回答 2

3

今天遇到了这个问题,最终我需要指定一个端口号作为连接字符串的一部分。供参考。

于 2012-11-02T18:43:31.483 回答
1

看起来我刚刚找到了解决方案,尽管我不完全理解为什么。如果使用的连接字符串是:

"DRIVER={FreeTDS};SERVER=SERVER;UID=user;PWD=pass;DATABASE=DATABASE"

然后由于某种原因它根本不起作用,我尝试使用将 SERVER 设置为 IP 和机器的实际名称......没有运气。但是,如果我将连接字符串更改为使用 SERVERNAME 或 DSN(字符串中只能包含 SERVER、SERVERNAME 或 DNS 之一)并且我提供了机器名称,那么它工作正常,我无法让它与 IP 一起工作我尝试了什么。因此,总而言之,对我有用的连接字符串是:

"DRIVER={FreeTDS};SERVERNAME=SERVERNAME;UID=user;PWD=pass;DATABASE=DATABASE"

这个问题的关键似乎在于 SQLDriverConnect。

于 2012-07-10T14:23:14.670 回答