2016-09-14 97 views
1

我的應用程序(ruby on rails)在linux中,我需要連接到Sql Server數據庫。如何在ruby配置中設置實例名稱數據庫

測試在命令行中,我得到:

$tsql -LH 10.10.10.10 

    ServerName MYCOMPSRV10 
InstanceName SQL2008R2 
IsClustered No 
    Version 10.50.4000.0 
     tcp 58891 

我可以使用命令行訪問數據庫:

$tsql -S 10.10.10.10\\SQL2008R2 -U username 

所以,在我的Ruby on Rails應用程序我的database.yml與此代碼:

development: 
    adapter: sqlserver 
    host: 10.10.10.10 
    database: MyDatabase 
    username: username 
    password: password 
    port: 1433 
    pool: 5 
    timeout: 5000 

但是當我嘗試運行應用程序我得到:

TinyTds::Error: Unable to connect: Adaptive Server is unavailable or does not exist 

如果我改變配置的嘗試添加數據庫實例名稱:

development: 
    adapter: sqlserver 
    host: '10.10.10.10\SQL2008R2' 
    database: MyDatabase 
    username: username 
    password: password 
    port: 1433 
    pool: 5 
    timeout: 5000 

並嘗試運行應用程序:

TinyTds::Error: Server name not found in configuration files 

我做了一個研究,不發現怎麼解決這個問題。我甚至沒有找到如何設置數據庫的實例名稱。 有人可以幫我嗎?

回答

0

我找到了一個解決方案:

安裝: 的unixODBC 的unixODBC斌 的unixODBC-dev的

sudo apt-get install unixodbc unixodbc-bin unixodbc-dev 

卸載 freetds的賓
freetds的-dev的
freetds的常見

sudo apt-get purge freetds-bin freetds-dev freetds-common 

下載freetds的電流和安裝:

tar -xzf freetds-patched.tar.gz 
cd freetds-1.00.15/ 
./configure 
make 
sudo make install 

我發現我的數據庫實例槽的DINAMIC端口此查詢:

SELECT local_tcp_port 
FROM sys.dm_exec_connections 
WHERE session_id = @@SPID 

,並更改database.yml的配置添加該端口,而不是默認的1433

development: 
    <<: *default 
    host: 10.10.10.10 
    username: myuser 
    password: mypwd 
    port: 58891 

之後我運行:

rake db:migrate 

一切工作正常

相關問題