日期:2014-05-17  浏览次数:20770 次

SQL Server资料收集(不断更新中…)
本帖最后由 roy_88 于 2011-08-29 10:36:48 编辑 一、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的默认侦听端口。如果有问题,则提示“……无法打开连接,连接失败"。
  如果这一步有问题,应该检查以下选项:
2       服务器是否启动了SQL Server 2000服务;
2       检查服务器端的网络配置,在服务器上打开:开始>程序>Microsoft SQL Server>服务器网络实用工具,检查是否启用TCP/IP协议,以及TCP/IP协议的端口是否与上面TELNET时的端口一致。同样,如果存在防火墙的话,也要打开该端口。
2       检查服务器是否在侦听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才是真正的安装。