9

这是我用来连接到 SQL Server 2012 Express 的代码。我的文件名为Connect.rb.

require "rubygems"
require "tiny_tds"
client = TinyTds::Client.new(
                    :username => 'sa',
                    :password => 'sapassword',
                    :dataserver => 'localhost\SQLEXPRESS',
                    :database => 'ContactsDB')
result = client.execute("SELECT * FROM [Contacts]") 

当我运行代码时,我收到以下错误:

在“执行”中:来自 Connect.rb 的关闭连接(TinyTds::Error):在“主”中

当我用以下代码替换上面的代码时,

client = TinyTds::Client.new(
                    :username => 'sa',
                    :password => 'sapassword',
                    :host => 'localhost',
                    :port => 1433,
                    :database => 'ContactsDB')

我收到以下错误:

在“连接”中:无法连接:自适应服务器不可用或不存在

是什么导致了这个错误以及如何解决它?

4

4 回答 4

3

看来配置没问题。dataserver 是定义非默认实例的正确符号。

确保启用 TCP/IP 和命名管道协议(在 SQL Express 上默认禁用)。同时启用 SQL Server Browser 服务正在运行(默认禁用)。

您可以在 Microsoft SQL Server/配置工具下的开始菜单中的 Sql Server 配置管理器中找到这些。确保在“客户端协议”和每个列出的实例中都启用它们。

此外,请确保您的防火墙允许 SQL 正在侦听的端口上的连接(默认为 1433)。

无需指定端口,因为 Tiny-TDS 默认为 1433。您的第二个代码段不包含实例。如果您在实例上设置了 SQL Express,那么您需要使用数据服务器,而不是主机,并指定实例名称。

于 2013-01-28T05:23:44.793 回答
2

尝试将端口号(即使它是默认值 1433)添加到配置的数据服务器值。我有一个设置,我通过流量管理器设备通过隧道到达远程网络上的 SQL Server,除非我专门设置我的配置,否则 TinyTDS 不会连接:

dataserver: 192.168.1.1:1433\SQL1

在我的情况下,在配置中设置port:值没有任何作用。奇怪的是,这一步是必需的,因为无论如何 1433 是默认值,而且我的其他 SQL Server 连接配置都不需要指定端口,但在这种特殊情况下添加它对我有用。

export TDSDUMP=/tmp/freetds.log您可以通过运行然后启动 irb 来测试您与 TinyTDS 的连接,同时跟踪该日志文件,从而更仔细地了解您的连接失败的原因。

于 2014-04-16T23:40:17.730 回答
2

我遇到了这个确切的问题,终于弄清楚了。我知道这是旧的,但我希望它可以帮助未来的人。

进入 Sql Server 配置管理器(开始 >> Microsoft SQL Server >> 配置工具)并打开 TCP/IP 和命名管道。在网络配置中,右键单击 TCP/IP,转到属性,然后是 IP 地址。您需要启用所需的连接(我使用的是 VM,所以我使用了 IPv4 地址),以及空白 TCP 动态端口并指定一个静态端口(我使用 1433)。

然后,您需要允许传入流量通过防火墙到达端口 1433(或任何静态端口)。

我做到了,终于进去了!

于 2014-03-30T22:47:07.197 回答
1

在 Windows 上,您需要:

首先,您应该拥有 sql server 的所有权限,使用 Microsoft SQL Server manager studio 执行此操作。

其次,使用 Sql Server 配置管理器,转到 SQL SERVER 网络配置并启用您的实例的协议,即带有名称和 TCP/IP 的管道,启用这些,一旦这样做,您应该转到 SQL SERVER 服务并启动 1。 SQL Server(实例)和2.Sql Server Browser explorer(重要)

在 YAML 上:(Windows 上的示例)

development:
  adapter: sqlserver
  database: GESTIONESDIVERSASDESARROLLO
  username: Admin1\Admin
  password: passw0rd
  dataserver: ADMIN1\SQLDEVELOPER
  timeout: 10
于 2013-10-04T19:15:43.797 回答