如何解决SQL Server 2000中的连接问题
2007-11-11 07:29:11 来源:WEB开发网核心提示: 如果通过 TCP/IP 连接您不能连接到 SQL Server 实例,请尝试使用命名管道协议或共享内存协议,如何解决SQL Server 2000中的连接问题(2),在命令提示符下运行下面的命令,以获取关于正在使用的端口的信息: NETSTAT -an 您还可以使用 Portqry 命令行实用程序来获取关于正在使用的
如果通过 TCP/IP 连接您不能连接到 SQL Server 实例,请尝试使用命名管道协议或共享内存协议。在命令提示符下运行下面的命令,以获取关于正在使用的端口的信息:
NETSTAT -an
您还可以使用 Portqry 命令行实用程序来获取关于正在使用的端口的更多信息。
有关 Portqry 命令行实用程序的其他信息,请单击下面的文章编号,以查看 Microsoft 知识库中相应的文章:
310099 Portqry.exe 命令行实用程序说明
有关与 TCP/IP 套接字相关的可能的错误的其他信息,请单击下面的文章编号,以查看 Microsoft 知识库中相应的文章:
306865 BUG:当 TCP/IP 是唯一的协议时,SQL Server 可能无法侦听 TCP/IP 套接字
注意:对于 SQL Server 命名实例,SQL Server 动态地决定端口并侦听决定的端口。因此,当您启动 SQL Server 命名实例时,SQL Server 将设法侦听之前使用的端口。如果 SQL Server 不能绑定到该端口,命名实例可能会动态地绑定到另一个端口。在这种情况下,请确认客户端应用程序也被设置为动态地决定端口。作为选择,您还可以为命名实例指定一个静态端口,通过客户端网络实用程序对其进行绑定和侦听。
有关其他信息,请单击下面的文章编号,以查看 Microsoft 知识库中相应的文章:
286303 INF:动态端口检测过程中 SQL Server 2000 网络库的行为
823938 如何在 SQL Server 2000 中使用静态和动态端口分配
返回页首
解决 MDAC 问题
MDAC 的问题也可能会引起连接问题。例如,安装一个软件可能会覆盖一些 MDAC 文件或更改权限,而您需要这些权限才能访问 MDAC 文件。您可以运行 MDAC 部件检查器来验证 MDAC 在计算机上的安装。
有关如何确定您当前的 MDAC 版本的其他信息,请单击下面的文章编号,以查看 Microsoft 知识库中相应的文章:
301202 如何检查 MDAC 版本
注意:如果您正连接到 SQL Server 的一个命名实例,请确认计算机上运行的是 MDAC 2.6 或更新的版本。MDAC 的早期版本不识别 SQL Server 的命名实例。因此,可能无法连接到命名实例。
您可以使用 Odbcping.exe 实用程序来验证通过 SQL Server ODBC 驱动程序的连接。
有关 Odbcping.exe 的其他信息,请单击下面的文章编号,以查看 Microsoft 知识库中相应的文章:
138541 如何使用 Odbcping.exe 验证到 SQL Server 的 ODBC 连接
有关配置 ODBC DSN 的其他信息,请单击下面的文章编号,查看 Microsoft 知识库中的相应文章:
289573 PRB:使用 SQL Server Net-Libraries(SQL Server 网络库)配置 DSN
您还可以使用一个 .udl 文件测试与 SQL Server 实例的连接。
有关如何创建 .udl 文件的其他信息,请单击下面的文章编号,以查看 Microsoft 知识库中相应的文章:
244659 示例:如何在 Windows 2000 中创建数据链接文件
返回页首
解决防火墙问题
如果防火墙存在于客户端计算机和正在运行 SQL Server 的计算机之间,请确认通过防火墙进行通信时所需的端口已打开。
有关通过防火墙进行通信时必须打开的端口的其他信息,请单击下面的文章编号,以查看 Microsoft 知识库中相应的文章:
287932 INF:通过防火墙与 SQL Server 进行通信所需的 TCP 端口
269882 如何使用 ADO 连接到防火墙后的 SQL Server
如果您使用 TCP/IP 协议连接 SQL Server 实例,请确认能够用 Telnet 程序连接到 SQL Server 正在侦听的端口。要使用 Telnet 程序,在命令提示符下运行下列命令:
Telnet <IP Address> <Port Number>
如果 Telnet 程序没有成功,并且您接收到错误信息,请解决此错误然后尝试再次连接。
注意:因为由 Slammer 病毒引起的问题,在您的防火墙上,用户数据报协议 (UDP) 端口 1434 可能被阻挡。
返回页首
解决身份验证和安全问题
由于身份认证失败,可能无法连接到 SQL Server。如果身份认证失败,您可能收到下列错误信息之一:
Login failed for user ’<username>’
Login failed for user ’NTAUTHORITY\ANONYMOUS LOGON’
Login failed for user ’null’
如果您由于身份认证失败收到了错误信息,而且错误信息中没有提到一个明确的 SQL Server 登录名,请使用 Windows 身份认证解决该问题。由于 Windows 身份认证的问题,您可能会收到下列错误信息:
Cannot generate SSPI Context
下列问题可能会引起身份认证和安全问题:
NTLM 身份认证或 Kerberos 身份认证出现问题。
由于连接问题,无法联系域控制器。
域之间的信任关系出现问题。
有关可能原因的更多信息,请参见计算机上的事件日志。要解决 Windows 身份认证的连接问题,您可以使用 SQL Server 身份认证连接到 SQL Server 实例。 有关如何诊断和解决“Cannot Generate SSPI Context”错误的其他信息,请单击下面的文章编号,以查看 Microsoft 知识库中相应的文章:
811889 如何排除“Cannot generate SSPI context”错误信息
如果在使用 SQL Server 身份认证时连接没有成功,您会收到下列错误信息:
Login failed for user ’<username>’ .Not associated with a trusted connection
若要解决此问题,请按照以下步骤操作。
警告:“注册表编辑器”使用不当可导致严重问题,可能需要重新安装操作系统。Microsoft 不能保证您可以解决因“注册表编辑器”使用不当而导致的问题。使用“注册表编辑器”需要您自担风险。
请确认 SQL Server 实例配置为使用 Windows 身份认证和 SQL Server 身份认证。为此,请确认在正在运行 SQL Server 的计算机上存在下列注册表项。对于默认的 SQL Server 实例:
HKEY_LOCAL_MACHINE\Software\Microsoft\mssql(WINDOWS平台上强大的数据库平台)Server\mssql(WINDOWS平台上强大的数据库平台)Server\LoginMode
对于 SQL Server 的命名实例:
HKEY_LOCAL_MACHINE\Software\Microsoft\Microsoft SQL Server\<Instance Name>\mssql(WINDOWS平台上强大的数据库平台)Server\LoginMode
请确认已设置下列注册表项的值:
身份认证类型值
仅限于 Windows 身份认证1
混合模式(SQL Server 身份认证和 Windows 身份认证)2
注意:如果您对注册表进行了任何更改,必须关闭并重新启动 SQL Server 实例使更改生效。
尝试使用其他 Windows 帐户或 SQL Server 登录帐户连接到 SQL Server 实例。这样能够帮助确定是否是由于某个特殊的登录帐户的问题而造成连接失败。例如,登录帐户的密码可能已被更改。
尝试使用其他协议连接到 SQL Server 实例。例如,使用 TCP/IP 协议进行 Windows 身份认证的连接可能会失败,但是使用命名管道协议进行 Windows 身份认证的连接就可能会成功。
如果您正在使用证书,当尝试连接到 SQL Server 实例时,可能会收到一条安全套接字层 (SSL) 安全错误信息。 有关其他信息,请单击下面的文章编号,以查看 Microsoft 知识库中相应的文章:
316898 如何借助 Microsoft Management Console 为 SQL Server 2000 启用 SSL 加密
322144 FIX:SECDoClientHandShake 无法连接到 SQL Server
更多精彩
赞助商链接