如何在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
一切工作正常