一次连不上SQL的问题解决

很久不配环境了, 新装的一套Windows Server 2008 R2的环境, 发现程序连不上SQL server.

1. 用test.udl连接不上.

image

image

2. 抓网络包, 看到三次握手成功. 连不上的原因是SQL Server返回了这条网络包.

458    7:53:48 AM 7/12/2012    33.3707944    System    10.4.2.5    10.4.2.7    SMB2    SMB2:R  - NT Status: System - Error, Code = (22) STATUS_MORE_PROCESSING_REQUIRED  SESSION SETUP (0x1), SessionFlags=0x0     {SMBOverTCP:12, TCP:11, IPv4:9}

3. 于是, 在Windows Server 2008 R2的feature里添加Telnet Client. 发现SQL Server的1433端口不通.

image

4. Remote到SQL机器上, 使用命令netstat –ano查看1433端口是否正在被SQL机器监听. 发现正在监听, 正常.

image

监听1433的进程正是sqlservr.exe, 进程ID是4288.

image

5. 打开Windows Firewall的配置处, 点击Advanced Settings.

image

选择Inbound Rules->New Rules->Port->TCP: 1433->Allow the connection->Domain,Private,Public->Name: SQL 1433

image

image

image

保存.

6. 回到客户端机器上, 重新telnet SQL, 连接SQL成功.

小结

===================

在这次排查中, 我们用到了telnet命令和netstat命令.

还用到了UDL文件来测试连接SQL服务.

解决问题的是我们创建了一条Windows Firewall的一条规则, 这条规则让其他的机器能够连接到SQL服务上.

这是一次对连接SQL的典型排错, 希望会大家会有帮助.

致谢

==================

感谢Peter Zhu提供帮助.

原文地址:https://www.cnblogs.com/awpatp/p/2588366.html