我一直看到这个错误,我无法连接到远程服务器上的数据库。
我获得了一个到数据库的连接字符串,如下所示:
data source=qsss.gar.de\SQL2012,3000;initial catalog=City;persist security info=True;user id=user_me;password=user_me##2009;
现在,我已根据该连接字符串创建了一个database.yml
文件,如下所示:
development:
adapter: 'sqlserver'
host: 'qsss.gar.de\SQL2012,3000'
port: 1433
database: 'City'
username: 'user_me'
password: 'user_me##2009'
当我尝试运行服务器时,总是遇到配置文件中找不到的服务器名称错误。
opts[:port] ||= 1433
opts[:dataserver] = "#{opts[:host]}:#{opts[:port]}" if opts[:dataserver].to_s.empty?
connect(opts) // ERROR AT THIS LINE
end
def tds_73?
请尝试帮我弄清楚这有什么问题?
更新
我可以使用SQLPro for MSSQL
向导连接到服务器,连接参数完全相同:
它适用于向导,但不适用于使用TinyTDS的代码!
答案 0 :(得分:3)
我遇到了同样的问题,我可以通过在config.yml文件中将“host”参数更改为“dataserver”来解决此问题。
同时检查运行应用程序的服务器是否能够解析数据库服务器的DNS名称,如果它没有放入服务器的IP。
我也使用Microsoft SQL数据库,只能在更改上述文件后解析“TinyTds :: Error:配置文件中找不到服务器名称”错误。
答案 1 :(得分:1)
请试试这个
development:
adapter: 'sqlserver'
dataserver: 'qsss.gar.de\SQL2012:3000'
database: 'City'
username: 'user_me'
password: 'user_me##2009'
您当前的配置有两件事
首先,您指定一个端口并将其包含在主机值中,因此实际上看起来像qsss.gar.de\SQL2012,3000:1433
第二,当解释主机时,反斜杠会加倍,例如qsss.gar.de\\SQL2012,3000:1433
dataserver
选项应解决此问题,因为TinyTDS表示此选项将支持hostname:port
格式的反斜杠和端口。我没有对此进行测试,但根据文档说明它应该是一个充分的解决方案。
答案 2 :(得分:0)
我的问题是我连接的数据库容器的版本。我正在连接到 SQL Server db via docker。当事情不正常时,我使用容器 2019-latest
。当我切换到 2019-CU6-ubuntu-16.04