【问题标题】:TinyTDS: Server name not found in configuration filesTinyTDS:在配置文件中找不到服务器名称
【发布时间】:2016-12-09 05:10:36
【问题描述】:

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

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

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'

当我尝试运行服务器时,它总是以 Server name not found in configuration files 错误提示我。

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

【问题讨论】:

  • 不熟悉,但主机名可能只是“qsss.gar.de”(端口也可能是 3000)
  • 不,没关系,我可以使用 SQLPro 向导中的那些参数进行连接,但不能从应用程序中连接。
  • 尝试将端口更改为 3000 并从主机中删除 3000,因为这与主机名无关。
  • @engineersmnky 我刚试过,还是一样的情况。我可以使用我提供的参数从 SQLPro 向导进行连接,所以这些很可能不是问题?
  • @engineersmnky 我想,如果我将主机更改为“qsss.gar.de”,而不是我能够连接的“qsss.gar.de\SQL2012”。所以问题出在解析那个“\”的地方。我有什么兴趣,我什至需要这部分“SQL2012”才能工作?或者如果我把它排除在外,它也会起作用吗?

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


【解决方案1】:

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

【讨论】:

    【解决方案2】:

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

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

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

    【讨论】:

      【解决方案3】:

      请试试这个

      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 格式的反斜杠和端口。我没有对此进行测试,但根据文档,它应该是一个足够的解决方案。

      【讨论】:

      • 我试过像你写的那样,但它让我回到最初的错误行:“在配置文件中找不到服务器名称”:(
      • 令我困惑的是,当我尝试访问服务器时,我在命令行中得到以下信息:“Started GET "/" for ::1 at 2016-08-03 16:56: 02 +0200。所以GET命令就像是针对空IP地址,看起来很奇怪?
      • 我想,如果我将主机更改为“qsss.gar.de”,而不是我能够连接的“qsss.gar.de\SQL2012”。所以问题出在解析那个“\”的地方。我有什么兴趣,我什至需要这部分“SQL2012”才能工作?
      • @zwiebl 如果您在该服务器上运行多个 SQL 实例,那么是的,因为该部分指定了实例。
      猜你喜欢
      • 1970-01-01
      • 2012-10-03
      • 2018-01-25
      • 2018-01-17
      • 1970-01-01
      • 2016-06-18
      • 1970-01-01
      • 1970-01-01
      • 2018-09-03
      相关资源
      最近更新 更多