尝试将Ruby连接到SQL Server时出现“Closed connection error”

这是我用来连接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]")

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

in ‘execute’ :closed connection (TinyTds::Error) from Connect.rb: in
‘main’

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

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

我收到以下错误:

in ‘connect’: Unable to connect: Adaptive server is unavailable or
does not exist

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

解决方法

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

确保启用了TCP / IP和命名管道协议(默认情况下在SQL Express上禁用).还启用SQL Server Browser服务正在运行(默认情况下禁用).

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

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

无需指定端口,因为Tiny-TDS默认为1433.您的第二个代码段不包含实例.如果在实例上安装了SQL Express,则需要使用dataserver,而不是host,并指定实例名称.

相关文章

validates:conclusion,:presence=>true,:inclusion=>{...
一、redis集群搭建redis3.0以前,提供了Sentinel工具来监控各...
分享一下我老师大神的人工智能教程。零基础!通俗易懂!风趣...
上一篇博文 ruby传参之引用类型 里边定义了一个方法名 mo...
一编程与编程语言 什么是编程语言? 能够被计算机所识别的表...
Ruby类和对象Ruby是一种完美的面向对象编程语言。面向对象编...