如何使MS SQL Server能够连接?

27

我正在尝试从Java程序连接到运行在我的计算机上的MS SQL Server。但是我收到了以下异常:

Exception in thread "main" com.microsoft.sqlserver.jdbc.SQLServerException: The TCP/IP connection to the host localhost, port 1433 has failed. Error: "Connection refused: connect. Verify the connection properties, check that an instance of SQL Server is running on the host and accepting TCP/IP connections at the port, and that no firewall is blocking TCP connections to the port.".

当我在MS SQL的对象资源管理器中检查“属性”并点击“查看连接属性”时,我发现“服务器不可用”。这个问题可能和异常信息相关。

如何让服务器变为可用状态?

编辑:

我正在使用SQL Server 2008,并且我已经启用了TCP/IP,并重新启动了实例。但仍然显示“服务器不可用”。

还有其他的想法吗?


你的连接字符串是什么? - Oliver Hanappi
Oliver,我不知道连接字符串是什么。 - Eric Wilson
11个回答

59

我也遇到了这个问题。

该MSKB文章适用于SQL Server 2005版本。

由于“SQL Server Surface Area Configuration”工具已被放弃,取而代之的是“Facets”,所以这对我来说并不明显。

我通过设置TCPAll端口并启用相关IP来解决了这个问题。


步骤

  1. 打开Sql Server Configuration Manager(开始->程序->Microsoft SQL Server 2008->配置工具)

  2. 展开SQL Server Network Configuration->[您的服务器实例]

  3. 双击TCP/IP

    • 协议下:

      确保已启用

    • IP地址下:

      滚动到底部,在IPAll下设置TCP端口(默认为1433)

      找到要连接的IP地址,并将启用活动设置为


还要检查配置中列出的端口号。默认连接端口是1433,但某些服务器上使用的端口已经更改。 - Daniel Underwood
5
我想亲吻你,在花费一个小时进行调试,收到类似“确保你没有通过防火墙屏蔽端口”之类的答案后,你的方法终于奏效了。我甚至不知道为什么设置IPAll端口就能解决问题(我之前是在IP上设置端口,但那样行不通)。谢谢你 <3 - Jess
对我来说这个可以正常工作。禁用TCP/IP协议是问题所在。好答案。 - krzysiek.ste

7
在处理连接之前,请先检查 SQL Server 服务是否正在运行。您可以使用 SQL Server 配置管理器(位于配置工具文件夹中)或 Windows 控制面板中的标准服务控制台来完成此操作。一旦确认服务已经启动,您需要确保 SQL Server 已被配置为允许远程连接。请参阅以下内容以了解如何执行此操作:

http://support.microsoft.com/kb/914277


5
我正在使用 SQL Server 2012,并且遇到了同样的问题。
请注意,当您激活TCP/IP时,有两个选项:
- Active - YES - 如果你只是点击了“是”,它是不会工作的。 - Enabled - 也要点击“是”。我没有注意到这一点,所以一直在浪费时间并且想知道为什么它不起作用。
您可以使用以下方法测试监听端口:
netstat -an

4

根据您使用的SQL Server版本,它可能默认只使用命名管道。

您需要启用TCP/IP连接到服务器。如果您能告诉我们您正在使用哪个版本的SQL server,我们可以提供更精确的启用TCP/IP的指示。


是的,除此之外,您甚至可以检查Chad建议的内容以检查实例是否正在运行。 - Kunal S
我正在使用2008版本,而且我认为现在已经启用了TCP/IP,但没有任何改善。 - Eric Wilson

4
通常情况下,检查以下几点: 1. 查看路由器是否启用了端口1433和1434(这是IP/UDP通信的默认端口)。 2. 确保如果客户端或服务器上有防火墙,这些端口没有被阻止(这是我遇到的“陷阱”)。 3. 进入Sql配置管理器,在Sql Server网络配置下确保启用了TCP/IP。同样,在同一程序中,如果安装了Sql Native Client 1.0,则也要启用TCP/IP。
确保所有连接信息都正常的一种简单而不太优雅的方法是创建一个.udl文件(在系统的任何位置),填写适当的信息并点击“测试连接”。如果出现问题,您将获得(相当)详细的错误信息。
如果您不知道.udl文件,请在Windows资源管理器中右键单击(右侧窗格)以创建一个“新文本文件”。输入任何可接受的名称,但将扩展名从.txt更改为.udl。系统会询问是否确认更改扩展名,选择是。创建后,单击该文件(或者如果您不使用单击,则双击)以打开它。有4个选项卡。第一个选项卡允许您选择提供程序。对于Visual Studio,请使用Sql Native client,对于其他任何程序,请尝试标准的Sql Server提供程序。在第二个选项卡中,您可以填写服务器名称、Sql Server用户名和密码(如果使用),等等。然后测试连接。还有一件事要注意-如果您正在使用Windows身份验证,请确保这些用户已添加到服务器登录名中。

3
打开Sql Server配置管理器。(开始|程序|任何版本的sql server|配置工具)
浏览到“SQL Server服务”,然后重新启动实例。但是,您可以在管理工作室中右键单击实例并选择重新启动。
如果重启失败,则检查计算机管理|事件查看器|应用程序,并查找SQL Server事件。它会在这里记录成功和错误消息。

3
这是我的截图。如果您无法阅读文字,则可以下载该图像或将其复制并粘贴到画图中。
在Glassfish中:
“常规”选项卡: enter image description here “其他属性”选项卡:
URL= jdbc:sqlserver://localhost;databaseName=NETEAV enter image description here 在Microsoft SQL Server Management Studio中: enter image description here

3

检查连接是否被防火墙屏蔽。如果第三方防火墙处于活动状态,则可能会阻止TCP连接。在进行此步骤之后 -
1. 检查TCP是否启用
a. 打开SQL Server配置管理器
b. SQL Server网络配置
c. MSSQLSERVER的协议
d. 启用TCP
e. 还要检查是否全部监听 - 是
f. 在IP地址选项卡中,IPAll的端口号应为1433


谢谢!我已经在所有地方设置了端口,除了IPAll下面,因为我的IP已经在上面列出。现在我可以连接了。 - Markus Barthlen

2

首先,检查sql服务器服务是否正在运行。如果您正在使用SQL 2005或2008,请检查配置管理器(2008)或表面配置工具(2005),以确保启用了TCP/IP协议并允许TCP/IP连接。对于SSE(express)来说,默认情况下这些是关闭的,这会导致问题。另外,如果您运行多个实例,则可能需要运行SQL浏览器服务。如果是这种情况,您应该能够通过使用(local)作为服务器地址来连接对象资源管理器,因为这将使用本地/共享内存连接。


1

从2005年开始,SQL服务器浏览器服务必须在运行状态。
这个问题曾经让我多次受挫。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接