2012-07-10 105 views
1

我花了最後一兩天在Ubuntu 12上設置unixODBC和freetds - 本身不是一個有趣的過程,但現在可以同時使用sqsh和isql。我已經安裝節點-ODBC和我使用的github readme提供的代碼片段來測試連接,但我總是得到Node-odbc無法連接到mssql

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(使用正確的creds ..)然後use DATABASE一旦連接,它的一切工作,我可以運行查詢罰款。在js我的連接字符串是

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

這正是用於與ISQL連接,但節點我得到上述錯誤的憑據相匹配。任何想法爲什麼發生這種情況?是否有可能做我的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 

在此先感謝您的幫助!

回答

1

它看起來像我剛剛找到了解決方案,雖然我不完全明白爲什麼。如果使用的連接字符串是:

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

然後由於某種原因,它不會在所有的工作中,我使用設置服務器的IP和機器...沒有運氣的實際名稱都試過。但是,如果我更改連接字符串以使用SERVERNAME或DSN(只能有一個SERVER,SERVERNAME或字符串中的DNS),並提供機器名稱,那麼它工作正常,我無法讓它與IP一起工作,無論我盡力嘗試。因此,總之,正在爲我工​​作的連接字符串是:

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

此問題的關鍵似乎在於SQLDriverConnect。

+0

我們有同樣的問題。我們的解決方案也是一樣的。配置FreeTDS並使用SERVERNAME而不是SERVER ...現在這需要我們分發和維護配置文件,而不是僅僅具有連接字符串: – 2012-08-06 15:41:19

3

今天遇到這個問題,結果是我需要指定一個端口號作爲連接字符串的一部分。僅供參考。