常见SQL Server连接错误问题分析和处理
1. 建立与 SQL Server 的连接时出现与网络有关的或特定于实例的错误。服务器找不到或无法访问。验证实例名称正确无误,并且 SQL Server 配置为允许远程连接。
l 类似错误信息
n (提供程序: SQL 网络接口错误: 26-错误定位的服务器/实例指定)
n 请检查实例名称正确无误,并且 SQL Server 配置为允许远程连接
n (提供程序: TCP 提供程序错误: 0-A 连接尝试失败,因为被连接的方没有正确响应后一段时间,或已建立的连接失败,因为连接的主机未能响应。)(Microsoft SQL Server,错误: 10060)
n (提供程序: 命名管道提供程序错误: 40-无法打开到 SQL Server 的连接)(Microsoft SQL Server,错误: 53) 找不到网络路径
n [Microsoft] [SQL Server 本机客户端 11.0] TCP 提供程序: 无法建立连接,因为目标机器积极地拒绝它。
n [Microsoft] [SQL Server 本机客户端 11.0] TCP 提供程序: 可以建立任何连接,因为目标机器积极地拒绝它。
n [Microsoft][SQL Server 本机客户端 11.0]登录超时已过期。
l 解决思路
在确保机器名和网络可以访问的情况下,还需要确保
n 启用SQL Server TCP/IP协议
n SQL Browser服务已经启动
n 数据库服务器的防火墙关闭,或者防火墙开放了数据库的端口,默认是1433/1434
n 保证网络环境没有阻止1433/1434数据库端口(通过下载PortqryUI工具来检查)
2. 超时已过期。在操作完成之前已超时或服务器没有响应
l 类似错误信息
n System.Data.SqlClient.SqlException (0x80131904): 连接超时已过期。试图使用登录前握手确认已超时。这可能是因为登录前握手失败或服务器不能及时返回。当尝试连接到此服务器处于-[登录前] 初始化时,所花费持续 = 23;握手 = 14979;---> System.ComponentModel.Win32Exception (0x80004005): 等待操作已超时
n System.Data.SqlClient.SqlException (0x80131904): 超时已过期。在操作完成之前已超时或服务器没有响应。---> System.ComponentModel.Win32Exception (0x80004005): 等待操作已超时
n 连接超时已过期。试图使用登录前握手确认已超时。这可能是因为登录前握手失败或服务器不能及时返回。当尝试连接到此服务器处于-[登录前] 初始化时,所花费持续 = 21036;握手 = 0;(Microsoft SQL Server,错误:-2)
l 解决思路
n 连接超时
u 增加应用程序 ConnectionTimout。
u 保证网络环境没有阻止1433/1434数据库端口(通过下载PortqryUI工具来检查)
n 命令超时
u 增加CommandTimeout时间,或者优化SQL语句
3. 从池中获取连接之前已超时
l 类似错误信息
n System.InvalidOperationException: 超时已过期。从池中获取连接之前已超时
l 解决思路
n 检查是否达到连接池的最大大小
n 使用数据库连接对象是否及时关闭连接
附 PortqryUI
下载地址:https://www.microsoft.com/en-us/download/details.aspx?id=24009
检查结果
实例类型 | 输出结果 | 可能的问题 |
默认实例 | TCP port 1433 (ms-sql-s service): NOT LISTENING | SQL 实例没有启动 |
默认实例 | TCP port 1433 (ms-sql-s service): LISTENING | 连接串中的实例名是否正确,如非默认实例MSSQLSERVER |
命名实例 | UDP port 1434 (ms-sql-m service): FILTERED | SQL命令实例没有启动 |
命名实例 | UDP port 1434 is LISTENING | 连接串中的实例名/端口是否正确 |
常见SQL Server连接错误问题分析和处理
本文2024-09-23 01:18:00发表“云星空知识”栏目。
本文链接:https://wenku.my7c.com/article/kingdee-k3cloud-145050.html