如何解决SQL Server 2000中的连接问题
2007-11-11 07:29:11 来源:WEB开发网核心提示: 解决 TCP/IP 套接字上的压力问题 在使用 SQL Server ODBC 驱动程序、Microsoft OLE DB Provider for SQL Server 或 System.Data.SqlClient 管理提供程序时,可以使用恰当的应用程序编程接口 (API) 来禁用连接池,如何解决SQL Serv
解决 TCP/IP 套接字上的压力问题
在使用 SQL Server ODBC 驱动程序、Microsoft OLE DB Provider for SQL Server 或 System.Data.SqlClient 管理提供程序时,可以使用恰当的应用程序编程接口 (API) 来禁用连接池。在禁用连接池、并且应用程序频繁打开和关闭连接时,对基本 SQL Server 网络库的压力可能会增大。有时候,Web 服务器和 JDBC 驱动程序也会尝试连接到 SQL Server 实例。因此,对 SQL Server 连接需求的增加可能会超过 SQL Server 的处理能力。这可能会给 TCP/IP 套接字带来压力,您还可能在 SQL Server 错误日志文件中收到下列错误信息:
2003-08-07 20:46:21.11 server Error:17832, Severity:20, State:6
2003-08-07 20:46:21.11 server Connection opened but invalid login packet(s) sent.Connection closed.
有关其他信息,请单击下面的文章编号,以查看 Microsoft 知识库中相应的文章:
154628 INF:SQL 在遇到多个 TCP\IP 连接请求时记录 17832
328476 禁用连接池时 SQL Server 驱动程序的 TCP/IP 设置
注意:如果运行 SQL Server 2000 SP3 或 SQL Server 2000 SP3a,则不会注意到对 TCP/IP 套接字的压力,这是由于添加了对登陆数据包数量的限制。在使用第三方驱动程序连接到 SQL Server 实例时,发生错误 17832。要解决该问题,请与第三方供应商联系,并获取经测试证明能够用于 SQL Server 2000 SP3 和 SQL Server 2000 SP3a 的驱动程序。
返回页首
查看 SQL Server 实例是否以单用户模式启动
如果尝试连接的 SQL Server 实例是以单用户模式启动的,只能建立一个到 SQL Server 的连接。如果运行软件的计算机自动连接到 SQL Server,该软件可以轻松地使用唯一的连接。例如,下面的软件可以自动连接到 SQL Server 实例:
SQL Server 代理程序
第三方备份软件
第三方监测软件
第三方病毒软件
Microsoft Internet 信息服务 (IIS)
SQL Server 企业管理器
尝试连接到 SQL Server 实例的客户端应用程序收到下列错误信息:
SQL Server does not exist or Access Denied
当安装过程以单用户模式启动 SQL Server 实例时,此错误一般发生在 SQL 群集安装和服务软件包安装期间。指定的应用程序会自动连接到使用唯一可用连接的 SQL Server 实例,从而安装失败。
要确定 SQL Server 实例是否已经以单用户模式启动,请检查 SQL Server 错误日志文件中是否具有一个与以下类似的条目:
2003-07-31 11:26:43.79 spid3 Warning ******************
2003-07-31 11:26:43.80 spid3 SQL Server started in single user mode.Updates allowed to system catalogs.
返回页首
验证到 SQL Server 的命名管道连接
如果您无法使用命名管道连接到 SQL Server 实例,请确认 SQL Server 实例配置为接受命名管道连接。 有关测试命名管道的过程的其他信息,请单击下面的文章编号,以查看 Microsoft 知识库中相应的文章:
68941 INF:测试命名管道的过程
返回页首
解决在恢复过程中连接超时的问题
在每次启动一个 SQL Server 实例时,SQL Server 将恢复各个数据库。在此恢复过程中,SQL Server 回滚未提交的事务。当停止 SQL Server 实例时,SQL Server 还将前滚已提交的事务和没有写入硬盘的更改。当恢复过程完成时,SQL Server 将在 SQL Server 错误日志文件中写入下列信息:
Recovery Complete
在恢复过程中,SQL Server 可能不会接受连接。在此时间内尝试连接到 SQL Server 的客户端可能会收到一条与以下类似的错误信息:
Timeout Expired
SQL Server 代理服务可能无法启动,这是因为它要等待 SQL Server 恢复数据库。因此,当您在 SQL Server 错误日志文件中收到下面的信息时,连接不再会因为超时错误而失败:
Recovery Complete
如果恢复过程花费的时间很长,您也许还要排除恢复过程的故障。
返回页首
测试连接到 SQL Server 实例的不同方法
当您连接到 SQL Server 实例时,如果遇到了连接问题,可以使用下面的一种或多种方法来解决连接问题。
使用SQL Server 身份认证和 Windows 身份认证测试到 SQL Server 实例的连接。
从其他数据源(例如 ODBC DSN、.udl 文件、SQL 查询分析器、SQL Server 企业管理器,isql 实用程序或 osql 实用程序)测试到 SQL Server 实例的连接。
使用其他协议测试到 SQL Server 实例的连接。您可以为使用该协议的 SQL Server 实例创建一个新的别名,从而指定不同的协议。还可以通过在 SQL Server 实例名称的开始处添加 tcp:、 np:、 lpc:、或 rpc: 来指定您的连接字符串中的协议。例如,如果 TCP/IP 连接失败,则命名管道连接成功。
使用其他登录帐户测试连接,这样可以帮助您确定该问题是否与某个特定的登录帐户有关。
在 %systemroot%\system32\drivers\etc\hosts 文件中添加一个与正在运行 SQL Server 实例的计算机的 IP 地址相应的条目。
尝试从运行 SQL Server 的计算机和客户端连接到 SQL Server 实例。
如果您正从运行 SQL Server 的计算机进行连接,可以指定“.”或“(本地)”(不带引号)取代服务器名称,然后连接。
尝试使用 IP 地址而不是服务器名称连接到 SQL Server 实例。
尝试指定 SQL Server 实例正在侦听的特定端口。有两种方法:创建一个别名或将一个端口号添加到连接字符串(例如 MyServer\MyInstance,1433)。
返回页首
捕捉网络监视器踪迹
如果使用“测试连接到 SQL Server 2000 实例的各种方法”小节中提到的步骤无法解决连接问题,请使用网络监视器实用程序捕捉网络踪迹。 有关网络追踪的其他信息,请单击下面的文章编号,以查看 Microsoft 知识库中相应的文章:
148942 如何使用网络监视器捕获网络通讯量
294818 关于网络监视器的常见问题
169292 解读 TCP/IP 跟踪数据的基础知识
102908 如何在 Windows 2000 或 Windows NT 中排除 TCP/IP 连接问题
要获得更多详细信息,需要使用 SQL 事件探查器踪迹。对于运行 SQL Server 进行网络追踪的非聚集计算机,还可以使用网络诊断工具。 有关如何使用网络诊断工具的其他信息,请单击下面的文章编号,以查看 Microsoft 知识库中相应的文章:
321708 如何在 Windows 2000 中使用网络诊断工具 (Netdiag.exe)
返回页首
参考
有关与 SQL Server 相关的各种连接问题的其他信息,请单击下面的文章编号,以查看 Microsoft 知识库中相应的文章:
812817 支持 Web 广播:Microsoft SQL Server 2000:连接故障排除
319930 如何连接到 Microsoft 桌面引擎
257434 INF:现有 DSN 中的网络库被连接到同名 SQL Server 的新 DSN 中的网络库取代。
306985 使用命名管道连接群集虚拟服务器时发生 RPC 错误
313062 如何在 Windows 2000 中通过使用 Active Server Pages 连接到数据库
313295 如何在连接字符串中使用服务器名参数指定客户端网络库
320728 如何排除“The Maximum Connection Limit Has Been Reached”错误信息
328306 INF:出现 “SQL Server Does Not Exist or Access Denied”(SQL Server 不存在或拒绝访问)错误信息的可能原因
247931 INF:在 Active Server Page 中验证到 SQL Server 的连接的方法
169377 如何在 Active Server Page 中访问 SQL Server
328383 INF:SQL Server 客户端可在连接时更改协议
238949 如何在 ADO 连接字符串中设置 SQL Server 网络库
270126 PRB:在进行 Active/Active Cluster 7.0 升级后如何管理客户端与两个 SQL Server 2000 虚拟服务器的连接
316779 PRB:拥有强制协议加密设置的客户端可能无法通过 IP 地址进行连接
216643 INF:跟踪到 SQL Server 7.0 的连接时找不到 ODBC/OLEDB 连接选项
265808 INF:如何用早期版本的客户端工具连接到 SQL Server 2000 命名实例
191572 INFO:从 ASP 调用的 ADO 对象管理的连接池
313173 用于 Microsoft SQL Server 2000 的 JDBC 驱动程序的示例连接池管理器
237844 如何在 Visual Basic ADO 应用程序中启用 ODBC 连接池
259569 PRB:安装第三方产品破坏了 Windows 2000 MDAC 注册表设置
更多精彩
赞助商链接