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

zwi*_*ebl 5 ruby sql-server ruby-on-rails 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;
Run Code Online (Sandbox Code Playgroud)

现在,我database.yml基于该连接字符串创建了一个文件,如下所示:

development:
    adapter:  'sqlserver'
    host:     'qsss.gar.de\SQL2012,3000'
    port:     1433
    database: 'City'
    username: 'user_me'
    password: 'user_me##2009'
Run Code Online (Sandbox Code Playgroud)

当我尝试运行服务器时,它总是以配置文件中找不到服务器名称打我。

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?
Run Code Online (Sandbox Code Playgroud)

请尝试帮助我弄清楚这是什么问题?

更新:

我可以使用SQLPro for MSSQL向导使用完全相同的连接参数连接到服务器:

图片

它可以通过向导运行,但不能通过TinyTDS的代码运行!

eng*_*nky 2

请尝试这个

development:
  adapter:    'sqlserver'
  dataserver: 'qsss.gar.de\SQL2012:3000'
  database:   'City'
  username:   'user_me'
  password:   'user_me##2009'
Run Code Online (Sandbox Code Playgroud)

您当前的配置受到两件事的影响

  • 首先,您指定一个端口并将其包含在主机值中,因此这实际上看起来像qsss.gar.de\SQL2012,3000:1433

  • 其次,当解释主机时,反斜杠将加倍,例如qsss.gar.de\\SQL2012,3000:1433

dataserver选项应该可以解决此问题,因为 TinyTDS 表示该选项将支持反斜杠和端口hostname:port格式。我还没有对此进行测试,但根据文档,它应该是一个足够的解决方案。