2017-04-25 128 views
0

我在Ubuntu 14.04上使用ODBC和FreeTDS。我們現在有三臺服務器可能在同一時間運行數據庫(一次只能運行一臺)。爲什麼一個ODBC連接工作,第二個不工作?

我嘗試將第二臺服務器添加到我的freetds.conf和odbc.ini文件中,但即使指定了相同的IP地址進行測試,它也不會連接。

odbc.ini文件

[Default] 
Driver=NewFreeTDS 

[MKMSDef] 
Driver=NewFreeTDS 
serverName=MKMSDefault 

[MKMSSecond] 
Driver=NewFreeTDS 
serverName=MKMSSecond 

[VP] 
Driver=NewFreeTDS 
ServerName=VirtualPrinter 

freetds.conf文件

[global] 
     tds version = 4.2 

     # Whether to write a TDSDUMP file for diagnostic purposes 
     # (setting this to /tmp is insecure on a multi-user system) 
     dump file = /tmp/freetds.log 
     debug flags = 0xffff 

     # Command and connection timeouts 
     timeout = 10 
     connect timeout = 10 

     # If you get out-of-memory errors, it may mean that your client 
     # is trying to allocate a huge buffer for a TEXT field. 
     # Try setting 'text size' to a more reasonable limit 
     text size = 64512 

[MKMSSecond] 
     host = 10.1.10.71 
     database = MKMSDefault 
     port = 2638 

[MKMSDefault] 
     host = 10.1.10.71 
     database = MKMSDefault 
     port = 2638 

[VirtualPrinter] 
     host = 10.1.10.22 
     database = VP 
     port = 2638 

isql命令MKMSDef用戶通成功連接 isql命令MKMSSecond用戶通失敗

我什麼也看不見了之間的不同兩個導致這一點。

編輯 經過一些進一步的測試。它似乎沒有讀取所有的信息來知道要連接到什麼。無論在odbc.ini中指定爲「ServerName」,都必須是數據庫名稱。它也需要在freetds.conf中定義,但只有IP和端口需要在那裏。

如果我連接到僅運行一個數據庫的計算機,則servername無關緊要。

這似乎不是正確的行爲。

回答

0

正如你已經部分想到的,如果你保持你的命名一致,簡單,並以相同的順序,它會容易得多。這裏有一個例子:

freetds.conf

[bob] 
host = bob.myserver.com 
port = 1433 
tds version = 7.2 

[fred] 
host = fred.myserver.com 
port = 1433 
tds version = 7.2 

[joe] 
host = joe.myserver.com 
port = 1433 
tds version = 7.2 

odbc.ini

[bob] 
Driver = FreeTDS 
Server =bob.myserver.com 
Port = 1433 
TDS_Version = 7.2 

[fred] 
Driver = FreeTDS 
Server = fred.myserver.com 
Port = 1433 
TDS_Version = 7.2 

[joe] 
Driver = FreeTDS 
Server = joe.myserver.com 
Port = 1433 
TDS_Version = 7.2 

如果你已經清理,但仍然遇到問題,請包括isql -v信息,以便我們可以看到什麼錯誤正在產生的。

相關問題