如何解决 SQL Server 中的连接问题.docx
- 文档编号:23213630
- 上传时间:2023-05-15
- 格式:DOCX
- 页数:25
- 大小:31.43KB
如何解决 SQL Server 中的连接问题.docx
《如何解决 SQL Server 中的连接问题.docx》由会员分享,可在线阅读,更多相关《如何解决 SQL Server 中的连接问题.docx(25页珍藏版)》请在冰豆网上搜索。
如何解决SQLServer中的连接问题
如何解决SQLServer2000中的连接问题
察看本文应用于的产品
文章编号
:
827422
最后修改
:
2004年5月31日
修订
:
1.0
本页
概要
解决连接问题
参考
这篇文章中的信息适用于:
概要
本文能帮助您解决MicrosoftSQLServer2000的连接问题。
本文描述了常见连接问题和所能采取的有助于解决连接问题的步骤。
回到顶端
SQLServer2000支持SQLServer实例和客户端应用程序间的多种通信方式。
如果您的客户端应用程序和SQLServer实例位于同一台计算机上,那么MicrosoftWindows处理之间的通讯(IPC)部件(例如本地命名管道或共享内存协议)将被用于通信。
但是,当客户端应用程序和SQLServer实例位于不同计算机上时,一个网络IPC(例如TCP/IP或命名管道)将被用于通信。
SQLServer2000使用网络库(一个DLL)与特定的网络协议进行通信。
一对匹配网络库必须在客户端计算机上激活,而且在支持待用网络协议的服务器计算机上也必须是激活的。
例如,如果您想启用一个客户端应用程序,通过TCP/IP与某个特定的SQLServer实例通信,那么客户端的TCP/IP套接字网络库(Dbnetlib.dll)就必须配置为连接到客户端计算机的服务器。
同样,服务器TCP/IP套接字网络库(Ssnetlib.dll)必须侦听服务器计算机。
在此方案中,TCP/IP协议堆栈必须同时安装在客户端计算机和服务器计算机上。
在安装完SQLServer2000之后,您可以通过客户端网络实用程序来配置客户端网络库的属性。
您可以通过服务器网络实用程序(Svrnetcn.exe)来配置服务器网络库的属性。
在安装SQLServer安装程序中的服务器工具时,服务器的网络库也同时被安装了。
但是,某些服务器的网络库可能未被激活。
在默认情况下,SQLServer2000启用并侦听TCP/IP、命名管道和共享内存。
因此,如果一个客户端要连接到一台服务器计算机,该客户端必须使用一个客户端网络库,该网络库须与SQLServer实例正在使用的服务器网络库之一相匹配。
有关SQLServer通讯部件和网络库的其他信息,请参见“SQLServer在线参考书”中的下列主题:
•
通信部件
•
客户端和服务器网络库
•
管理客户端
回到顶端
解决连接问题
在SQLServer2000中您可能会注意到的大多数连接问题都是由TCP/IP的问题或Windows身份认证的问题引起,或者由两者共同引起。
重要说明:
在开始解决SQLServer2000的连接问题之前,请确认MSSQLServer服务已在运行SQLServer的计算机上启动。
验证DNS设置
域名系统(DNS)中的名称解析过程用于解析SQLServer实例名称的IP地址。
如果名称解析过程工作不正常,就不能获得SQLServer实例,您可能会收到一条或多条下列错误信息:
SQLServerdoesnotexistoraccessdenied
GeneralNetworkError
CannotGenerateSSPIContext
要验证名称解析过程是否在解析正确的服务器,可以使用服务器名和服务器的IP地址ping服务器。
为此,请按以下步骤操作:
1.
单击“开始”,然后单击“运行”。
2.
在“运行”对话框中,在“打开”框中键入cmd,然后单击“确定”。
3.
在命令提示符下,运行下列命令:
ping
记录返回的IP地址。
4.
在命令提示符下,运行下列命令(此处的IPaddress就是您在步骤3中记录的IP地址):
ping–a
验证命令解析的是正确的服务器名。
如果两个指定的命令有任何一个不成功、超时或没有返回正确的值,那么DNS查找未能正常工作,或者有其他网络或路由问题引发问题。
要查看当前DNS设置,在命令提示符下运行下列命令:
ipconfig/all
有关ipconfig命令的其他信息,请单击下面的文章编号,以查看Microsoft知识库中相应的文章:
223413(Windows2000中Ipconfig.exe的选项
要解决此问题,可以在客户端计算机上的%systemroot%\system32\drivers\etc\hosts文件中为服务器添加一个条目。
要解决此问题,还可以使用命名管道网络库连接到服务器。
验证启用的协议和别名
如果客户端计算机上的别名设置错误,可能会引起连接问题。
您可以使用客户端网络实用程序查看别名。
为此,请按以下步骤操作:
1.
启动客户端网络实用程序。
如果SQLServer客户端工具被安装在正在运行客户端应用程序的计算机上,请按照以下步骤启动客户端网络实用程序:
a.
单击“开始”,然后指向“程序”。
b.
指向“MicrosoftSQLServer”,然后单击“客户端网络实用程序”。
如果SQLServer客户端工具没有安装在客户端计算机上,请按照以下步骤启动客户端网络实用程序:
a.
单击“开始”,然后单击“运行”。
b.
在“运行”对话框中,在“打开”框中键入cliconfg,然后单击“确定”。
2.
在“SQLServer客户端网络实用程序”窗口中,单击“常规”标签,然后启用您要使用的所有协议。
注意:
您必须至少启用TCP/IP协议和命名管道协议。
3.
单击“别名”标签,然后验证为SQLServer实例所配置的别名。
4.
验证别名的属性,确认服务器名或IP地址和协议的配置是正确的。
通过使用服务器名、IP地址或者其他协议,您可以创建一个新的别名以测试连接性能。
注意:
在Microsoft数据存取部件(MDAC)的早期版本中,客户端网络实用程序的用户界面是不同的。
因此,如果您没有看到本文中列出的选项,请在运行客户端应用程序的计算机上安装MDAC的新版本。
验证SQLServer实例正在正确地侦听
要验证SQLServer实例正在正确地侦听命名管道、TCP/IP或您在客户端应用程序中使用的其他协议,请打开当前的SQLServer错误日志文件。
SQLServer错误日志文件可能包括与以下类似的条目:
2003-11-0609:
49:
36.17serverSQLserverlisteningonTCP,SharedMemory,NamedPipes.2003-11-0609:
49:
36.17serverSQLserverlisteningon192.168.1.5:
1433,127.0.0.1:
1433.
通过分析SQLServer错误日志文件中的条目,可以验证SQLServer实例是否正在侦听正确的IP地址和端口。
在默认情况下,一个默认的SQLServer实例侦听端口1433。
您还可以使用服务器网络实用程序来验证SQLServer的协议设置并更改SQLServer中的属性,包括可以连接到SQLServer和可以使用的端口的协议。
关于使用服务器网络实用程序的更多信息,请参见SQLServer在线参考书中的“SQLServer网络实用程序”专题。
有时候,SQLServer2000可能不会绑定于端口1433或任何其他指定的端口。
如果端口正被其他应用程序使用,或者如果您正在尝试使用一个错误的IP地址进行连接,就可能会出现此问题。
因此,TCP/IP到SQLServer的连接可能不成功,在SQLServer错误日志中您会收到下列错误信息:
2001-11-1415:
49:
14.12serverSuperSocketInfo:
BindfailedonTCPport1433.
有关其他信息,请单击下面的文章编号,以查看Microsoft知识库中相应的文章:
307197(PRB:
TCP\IP端口正由另一应用程序使用
如果通过TCP/IP连接您不能连接到SQLServer实例,请尝试使用命名管道协议或共享内存协议。
在命令提示符下运行下面的命令,以获取关于正在使用的端口的信息:
NETSTAT-an
您还可以使用Portqry命令行实用程序来获取关于正在使用的端口的更多信息。
有关Portqry命令行实用程序的其他信息,请单击下面的文章编号,以查看Microsoft知识库中相应的文章:
310099(Portqry.exe命令行实用程序说明
有关与TCP/IP套接字相关的可能的错误的其他信息,请单击下面的文章编号,以查看Microsoft知识库中相应的文章:
306865(BUG:
当TCP/IP是唯一的协议时,SQLServer可能无法侦听TCP/IP套接字
注意:
对于SQLServer命名实例,SQLServer动态地决定端口并侦听决定的端口。
因此,当您启动SQLServer命名实例时,SQLServer将设法侦听之前使用的端口。
如果SQLServer不能绑定到该端口,命名实例可能会动态地绑定到另一个端口。
在这种情况下,请确认客户端应用程序也被设置为动态地决定端口。
作为选择,您还可以为命名实例指定一个静态端口,通过客户端网络实用程序对其进行绑定和侦听。
有关其他信息,请单击下面的文章编号,以查看Microsoft知识库中相应的文章:
286303(INF:
动态端口检测过程中SQLServer2000网络库的行为
823938(如何在SQLServer2000中使用静态和动态端口分配
解决MDAC问题
MDAC的问题也可能会引起连接问题。
例如,安装一个软件可能会覆盖一些MDAC文件或更改权限,而您需要这些权限才能访问MDAC文件。
您可以运行MDAC部件检查器来验证MDAC在计算机上的安装。
有关如何确定您当前的MDAC版本的其他信息,请单击下面的文章编号,以查看Microsoft知识库中相应的文章:
301202(如何检查MDAC版本
注意:
如果您正连接到SQLServer的一个命名实例,请确认计算机上运行的是MDAC2.6或更新的版本。
MDAC的早期版本不识别SQLServer的命名实例。
因此,可能无法连接到命名实例。
您可以使用Odbcping.exe实用程序来验证通过SQLServerODBC驱动程序的连接。
有关Odbcping.exe的其他信息,请单击下面的文章编号,以查看Microsoft知识库中相应的文章:
138541(如何使用Odbcping.exe验证到SQLServer的ODBC连接
有关配置ODBCDSN的其他信息,请单击下面的文章编号,查看Microsoft知识库中的相应文章:
289573(PRB:
使用SQLServerNet-Libraries(SQLServer网络库)配置DSN
您还可以使用一个.udl文件测试与SQLServer实例的连接。
有关如何创建.udl文件的其他信息,请单击下面的文章编号,以查看Microsoft知识库中相应的文章:
244659(示例:
如何在Windows2000中创建数据链接文件
解决防火墙问题
如果防火墙存在于客户端计算机和正在运行SQLServer的计算机之间,请确认通过防火墙进行通信时所需的端口已打开。
有关通过防火墙进行通信时必须打开的端口的其他信息,请单击下面的文章编号,以查看Microsoft知识库中相应的文章:
287932(INF:
通过防火墙与SQLServer进行通信所需的TCP端口
269882(如何使用ADO连接到防火墙后的SQLServer
如果您使用TCP/IP协议连接SQLServer实例,请确认能够用Telnet程序连接到SQLServer正在侦听的端口。
要使用Telnet程序,在命令提示符下运行下列命令:
Telnet
如果Telnet程序没有成功,并且您接收到错误信息,请解决此错误然后尝试再次连接。
注意:
因为由Slammer病毒引起的问题,在您的防火墙上,用户数据报协议(UDP)端口1434可能被阻挡。
解决身份验证和安全问题
由于身份认证失败,可能无法连接到SQLServer。
如果身份认证失败,您可能收到下列错误信息之一:
Loginfailedforuser'
Loginfailedforuser'NTAUTHORITY\ANONYMOUSLOGON'
Loginfailedforuser'null'
如果您由于身份认证失败收到了错误信息,而且错误信息中没有提到一个明确的SQLServer登录名,请使用Windows身份认证解决该问题。
由于Windows身份认证的问题,您可能会收到下列错误信息:
CannotgenerateSSPIContext
下列问题可能会引起身份认证和安全问题:
•
NTLM身份认证或Kerberos身份认证出现问题。
•
由于连接问题,无法联系域控制器。
•
域之间的信任关系出现问题。
有关可能原因的更多信息,请参见计算机上的事件日志。
要解决Windows身份认证的连接问题,您可以使用SQLServer身份认证连接到SQLServer实例。
有关如何诊断和解决“CannotGenerateSSPIContext”错误的其他信息,请单击下面的文章编号,以查看Microsoft知识库中相应的文章:
811889(如何排除“CannotgenerateSSPIcontext”错误信息
如果在使用SQLServer身份认证时连接没有成功,您会收到下列错误信息:
Loginfailedforuser'
若要解决此问题,请按照以下步骤操作。
警告:
“注册表编辑器”使用不当可导致严重问题,可能需要重新安装操作系统。
Microsoft不能保证您可以解决因“注册表编辑器”使用不当而导致的问题。
使用“注册表编辑器”需要您自担风险。
1.
请确认SQLServer实例配置为使用Windows身份认证和SQLServer身份认证。
为此,请确认在正在运行SQLServer的计算机上存在下列注册表项。
对于默认的SQLServer实例:
HKEY_LOCAL_MACHINE\Software\Microsoft\MSSQLServer\MSSQLServer\LoginMode
对于SQLServer的命名实例:
HKEY_LOCAL_MACHINE\Software\Microsoft\MicrosoftSQLServer\
请确认已设置下列注册表项的值:
身份认证类型
值
仅限于Windows身份认证
1
混合模式(SQLServer身份认证和Windows身份认证)
2
注意:
如果您对注册表进行了任何更改,必须关闭并重新启动SQLServer实例使更改生效。
2.
尝试使用其他Windows帐户或SQLServer登录帐户连接到SQLServer实例。
这样能够帮助确定是否是由于某个特殊的登录帐户的问题而造成连接失败。
例如,登录帐户的密码可能已被更改。
3.
尝试使用其他协议连接到SQLServer实例。
例如,使用TCP/IP协议进行Windows身份认证的连接可能会失败,但是使用命名管道协议进行Windows身份认证的连接就可能会成功。
如果您正在使用证书,当尝试连接到SQLServer实例时,可能会收到一条安全套接字层(SSL)安全错误信息。
有关其他信息,请单击下面的文章编号,以查看Microsoft知识库中相应的文章:
316898(如何借助MicrosoftManagementConsole为SQLServer2000启用SSL加密
322144(FIX:
SECDoClientHandShake无法连接到SQLServer
解决TCP/IP套接字上的压力问题
在使用SQLServerODBC驱动程序、MicrosoftOLEDBProviderforSQLServer或System.Data.SqlClient管理提供程序时,可以使用恰当的应用程序编程接口(API)来禁用连接池。
在禁用连接池、并且应用程序频繁打开和关闭连接时,对基本SQLServer网络库的压力可能会增大。
有时候,Web服务器和JDBC驱动程序也会尝试连接到SQLServer实例。
因此,对SQLServer连接需求的增加可能会超过SQLServer的处理能力。
这可能会给TCP/IP套接字带来压力,您还可能在SQLServer错误日志文件中收到下列错误信息:
2003-08-0720:
46:
21.11serverError:
17832,Severity:
20,State:
6
2003-08-0720:
46:
21.11serverConnectionopenedbutinvalidloginpacket(s)sent.Connectionclosed.
有关其他信息,请单击下面的文章编号,以查看Microsoft知识库中相应的文章:
154628(INF:
SQL在遇到多个TCP\IP连接请求时记录17832
328476(禁用连接池时SQLServer驱动程序的TCP/IP设置
注意:
如果运行SQLServer2000SP3或SQLServer2000SP3a,则不会注意到对TCP/IP套接字的压力,这是由于添加了对登陆数据包数量的限制。
在使用第三方驱动程序连接到SQLServer实例时,发生错误17832。
要解决该问题,请与第三方供应商联系,并获取经测试证明能够用于SQLServer2000SP3和SQLServer2000SP3a的驱动程序。
查看SQLServer实例是否以单用户模式启动
如果尝试连接的SQLServer实例是以单用户模式启动的,只能建立一个到SQLServer的连接。
如果运行软件的计算机自动连接到SQLServer,该软件可以轻松地使用唯一的连接。
例如,下面的软件可以自动连接到SQLServer实例:
•
SQLServer代理程序
•
第三方备份软件
•
第三方监测软件
•
第三方病毒软件
•
MicrosoftInternet信息服务(IIS)
•
SQLServer企业管理器
尝试连接到SQLServer实例的客户端应用程序收到下列错误信息:
SQLServerdoesnotexistorAccessDenied
当安装过程以单用户模式启动SQLServer实例时,此错误一般发生在SQL群集安装和服务软件包安装期间。
指定的应用程序会自动连接到使用唯一可用连接的SQLServer实例,从而安装失败。
要确定SQLServer实例是否已经以单用户模式启动,请检查SQLServer错误日志文件中是否具有一个与以下类似的条目:
2003-07-3111:
26:
43.79spid3Warning******************
2003-07-3111:
26:
43.80spid3SQLServerstartedinsingleusermode.Updatesallowedtosystemcatalogs.
验证到SQLServer的命名管道连接
如果您无法使用命名管道连接到SQLServer实例,请确认SQLServer实例配置为接受命名管道连接。
有关测试命名管道的过程的其他信息,请单击下面的文章编号,以查看Microsoft知识库中相应的文章:
68941(INF:
测试命名管道的过程
解决在恢复过程中连接超时的问题
在每次启动一个SQLServer实例时,SQLServer将恢复各个数据库。
在此恢复过程中,SQLS
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 如何解决 SQL Server 中的连接问题 如何 解决 中的 连接 问题
![提示](https://static.bdocx.com/images/bang_tan.gif)