6

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

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

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 的代码!

4

3 回答 3

3

我遇到了同样的问题,我可以通过在 config.yml 文件中将“host”参数更改为“dataserver”来解决它。

还要检查运行应用程序的服务器是否能够解析数据库服务器的 DNS 名称,如果它没有放置服务器的 IP。

我也是用微软的SQL数据库,修改上面的文件后只能解决“TinyTds :: Error: Server name not found in configuration files”的错误。

于 2016-12-04T14:32:09.873 回答
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格式的端口。我没有对此进行测试,但根据文档,它应该是一个足够的解决方案。

于 2016-08-03T14:48:21.147 回答
0

我的问题是我连接到的数据库容器的版本。我正在通过 docker连接到SQL Server 数据库。当事情不起作用时,我正在使用 container 2019-latest。当我切换到2019-CU6-ubuntu-16.04

于 2021-04-21T20:36:48.417 回答