您好,欢迎来到筏尚旅游网。
搜索
您的当前位置:首页SQL连接失败排查方法

SQL连接失败排查方法

来源:筏尚旅游网


一、SQL Server访问时常见错误

1.1、SQL Server不存在或访问被拒绝

(1)、能否PING通服务器(检查网络)

基础网络知识:

序号 目标 现象 结果

1 127.0.0.1 能通 说明TCP/IP说明没有问题

2 本机网卡IP 能通 说明TCP/IP已与网卡正确绑定

3 对方IP或网关(同一网段) 能通 说明网线和对方设置都没有问题

4 对方IP或网关(同一网段) 不通 作如下软硬件方面的检查

硬件:

1:网卡问题:插槽坏了,网卡没插好,网卡坏了,网口坏了;

2:网线问题:水晶头,水晶头与网卡的接触不好(劣质水晶头),网线内部断了,或者没有插网线;

软件:

1:网卡驱动;

2:网卡设置(IP,掩码,网关,DNS);

3:错误的设置路由(win2000/win2003);

4:防火墙的原因(包括XP自带或者第三方的);

5:如果TCP/IP协议的[卸载]选项是灰色的,说明WinXP 系统的TCP/IP协议已经被卸载。PING 127.0.0.1的时候就会出现错误,此时无法通过重装TCP/IP协议还原系统的TCP/IP,可以利用NETSH命令的重置TCP/IP协议堆栈功能

格式如下

c:\\>netsh

netsh>interface

netsh interface>ip

netsh interface ip>RESET C:\\RESETTCPIP.LOG

说明:

NETSH 在重置TCP/IP堆栈的时候必须指定一个记录文件

其中C:\\RESETTCPIP.LOG 为一个记录文件.用来记录NETSH 在重置过程中的所有操作

这样重置以后TCP/IP协议就可以回复为正常时候的状态了。

6:如何自动分配IP

用ipconfig /release,ipconfig /renew命令看看能不能获取IP,可运行ipconfig/all查看,如果显示了DHCP Server的地址,而ip地址仍然为0.0.0.0,那么就运行\"services.msc\确保[DHCP Client]服务已经启动。

(2)、能否TELNET通服务器(检查SQL Server服务及端口)

运行\"services.msc\",确保服务器上TELNET服务启用的情况下,运行telnet 192.168.0.1 1433,1433是SQL Server 2000对于TCP/IP的默认侦听端口。如果有问题,则提示“……无法打开连接,连接失败\"。

如果这一步有问题,应该检查以下选项:

² 服务器是否启动了SQL Server 2000服务;

² 检查服务器端的网络配置,在服务器上打开:开始>程序>Microsoft SQL Server>服务器网络实用工具,检查是否启用TCP/IP协议,以及TCP/IP协议的端口是否与上面TELNET时的端口一致。同样,如果存在防火墙的话,也要打开该端口。

² 检查服务器是否在侦听SQL Server的TCP/IP端口:在服务器命令行下面输入

netstat -a -n 或者是netstat -an,在结果列表里看是否有类似 tcp 127.0.0.1 1433 listening 的项。如果没有,则需要给SQL Server 2000打上至少sp3的补丁。其实在服务器端,可以按照《SQL Server 2000 基础(1)——安装》中的方法查看当前补丁的版本。

如果以上都没问题,再次TELNET测试,将会看到屏幕一闪之后光标在命令行窗口左上角闪动,这表明TELNET测试成功。

但有的时候TELNET通了,上面的检查全正常但还是报这个错,后来我发现用JDBC可以连接上,于是,就猜想可能是ODBC的原因(查询分析器用的是ODBC驱动连到数据库的),就装了个MDAC2.8,然后再去控制面板中用ODBC数据源测试,还是不通,无意间改了一下数据源中的客户端配置,将其中的端口由动态改为固定,就可以连接成功了,至于其中原因还没有分析清楚。

(3)、检查客户端的网络配置

在客户端打开:开始>程序>Microsoft SQL Server>客户端网络使用工具。

检查是否启用TCP/IP协议,以及TCP/IP协议的端口是否与服务器端的一致。

附注:在连接本地服务器时,通常使用的是命名管道协议(在服务器网络实用工具里可以看到启用的协议有这个),默认端口是445,因此在本地能连通是不能说明什么问题的,连接远程服务器是使用的TCP/IP协议。

1.2、无法连接到服务器,用户xxx登陆失败

错误产生的原因有两种:

(1)密码错误,如果密码中有字母,可检查大小写;

(2)由于SQL Server使用了\"仅 Windows\"的身份验证方式,因此用户无法使用SQL Server的登录帐户(如sa )进行连接,解决办法如下:

企业管理器>服务器>编辑SQL Server注册属性>使用windows身份验证,以连接上SQL Server;

企业管理器>服务器>属性>安全性,以设置身份验证模式为SQL Server和Windows;

重新启动SQL Server服务,用SQL Server用户重新连接。

以上设置可通过修改注册表来实现,如下:

运行REGEDIT,打开注册表;

打开到

HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\MSSQLServer\\MSSQLServer

将右侧窗口的”LoginMode”项的值从1改为2;

重新启动SQL Server服务,用SQL Server用户重新连接。

以下注册表键:

HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\MSSQLServer\\MSSQLServer\\LoginMode的值决定了SQL Server将采取何种身份验证模式.

1.表示使用Windows身份验证模式 ;

2.表示使用混合模式(Windows身份验证和SQL Server身份验证)。

1.3、提示连接超时

遇到这个错误,表示客户端已经找到了这台服务器且可以连接,不过是由于连接的时间大于允许的时间而导致出错。

一般当用户在Internet上用客户端连接服务器时,如果网速慢,有可能会导致以上的超时错误。某些情况下,由于局域网的网络问题,也可能会导致这样的错误。

默认情况下,通过企业管理器注册另外一台SQL Server的超时设置是4秒,而查询分析器是15秒,这也是为什么在企业管理器里发生错误的可能性比较大的原因。

要解决这样的错误,可以修改客户端的连接超时设置,如下:

企业管理器中的设置:企业管理器>工具>选项>高级>连接设置>登录超时;

查询分析器中的设置:查询分析器>工具>选项>连接>登录超时。

1.4、SQL Server 2000无法打开1433端口

如果你是WINXP 或WIN2003,那么一定要安装SQL SERVER SP3及以上的补丁。

注意:SP4补丁执行的时候是解压,要在解压后的目录中执行setup.bat才是真正的安装。

二、禁止别的电脑访问本机的SQL Server服务器

(1)设置用户密码(包括WINDOWS和SQL SERVER),不提供用户及密码给不想让其访问的用户;

(2)防火墙中设置,只允许指定IP访问你的SQL Server服务器端口(默认1433),当然,从更为安全的角度来考虑,应该把1433端口改成其他的端口;

(3)如果使用SQL Server 2005,还可以通过端点的方法来实现,此方法要求一块专门的网卡,所有可以连接SQL Server的客户端均通过此网卡接入(假设此网卡的IP是192.168.1.1):

1. 在“SQL Server 配置管理器”的“SQL Server 2005网络配置中”,禁止除TCP/IP之外的所有协议;

2. 使用如下的T-SQL禁止默认的TCP端点

ALTER ENDPOINT [TSQL Default TCP]

STATE = STOPPED

3. 使用如下的T-SQL建立新的TCP端点和授权

USE master

GO

-- 建立一个新的端点

CREATE ENDPOINT [TSQL User TCP]

STATE = STARTED

AS TCP(

LISTENER_PORT = 1433,

LISTENER_IP = (192.168.1.1) -- 侦听的网络地址

)

FOR TSQL()

GO

-- 授予所有登录(或者指定登录)使用此端点的连接权限

GRANT CONNECT ON ENDPOINT::[TSQL User TCP]

TO [public]

完成上述配置之后,只有通过网络地址配置为192.168.1.1的网卡接入的客户端才能访问SQL Server;另外,如果只授予指定登录对端点的连接权限,则只有指定的登录才能接入SQL Server实例。

(4)当SQL Server 2005升级到SP2或者更高的版本的时候,还可以通过服务器级的DDL触发器来实现控制。

执行下面的T-SQL后,将使除IP地址为192.168.1.1之外的客户端连接失败。

USE master

GO

CREATE TRIGGER tr_LoginCheck

ON ALL SERVER

FOR LOGON

AS

IF EVENTDATA().value('(/EVENT_INSTANCE/ClientHost)[1]', 'varchar(15)') <> '192.168.1.1'

ROLLBACK TRAN

GO

因篇幅问题不能全部显示,请点此查看更多更全内容

Copyright © 2019- efsc.cn 版权所有 赣ICP备2024042792号-1

违法及侵权请联系:TEL:199 1889 7713 E-MAIL:2724546146@qq.com

本站由北京市万商天勤律师事务所王兴未律师提供法律服务