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

检查结果

实例类型

输出结果

可能的问题

默认实例

TCP port 1433   (ms-sql-s service): NOT LISTENING

SQL 实例没有启动

TCP/IP 协议没有启用

SQL 数据库端口使用的非1433

防火墙阻止了1433端口

默认实例

TCP port   1433 (ms-sql-s service): LISTENING

连接串中的实例名是否正确,如非默认实例MSSQLSERVER

使用了错误的端口

命名实例

UDP port   1434 (ms-sql-m service): FILTERED

SQL命令实例没有启动

SQL browser 服务没有启动

防火墙阻止了UDP 端口 1434

命名实例

UDP port   1434 is LISTENING

连接串中的实例名/端口是否正确

更多推荐

金蝶系统未连接sql服务器,金蝶云常见SQL Server连接错误问题分析和处理