如何在ruby配置中设置实例名称数据库

问题描述:

我的应用程序(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 

我做了一个研究,不发现怎么解决这个问题。我甚至没有找到如何设置数据库的实例名称。 有人可以帮我吗?

我找到了一个解决方案:

安装: 的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 

一切工作正常