Node-odbc无法连接到mssql

时间:2012-07-10 13:24:00

标签: sql-server node.js unixodbc

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

 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 I中得到上述错误。有关为什么会发生这种情况的任何想法?有可能是我的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

提前感谢您的帮助!

2 个答案:

答案 0 :(得分:3)

今天遇到这个问题,结果是我需要指定一个端口号作为连接字符串的一部分。 FYI。

答案 1 :(得分: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。