TinyTDS:配置文件中找不到服务器名称

时间:2016-08-03 12:54:21

标签: ruby-on-rails sql-server ruby freetds tiny-tds

我一直看到这个错误,我无法连接到远程服务器上的数据库。

我获得了一个到数据库的连接字符串,如下所示:

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向导连接到服务器,连接参数完全相同:

picture

它适用于向导,但不适用于使用TinyTDS的代码!

3 个答案:

答案 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

时,一切开始奏效