月下博客

provider: Named Pipes Provider, error: 40 – 无法打开到 SQL Server 的连接

转载请注明文章出处:https://tlanyan.me/provider-named-pipes-provider-error-connect-sqlserver-error

这是今天关于Windows的第三篇博文(囧),当然这篇不是吐槽而是转载关于Asp.Net程序连接SQL Server出错的解决办法。

错误描述

在Asp.Net应用程序里配置connectionString,打开网页时抛出异常:

[Win32Exception (0x80004005): 系统找不到指定的文件。]

[SqlException (0x80131904): 在与 SQL Server 建立连接时出现与网络相关的或特定于实例的错误。未找到或无法访问服务器。请验证实例名称是否正确并且 SQL Server 已配置为允许远程连接。 (provider: Named Pipes Provider, error: 40 - 无法打开到 SQL Server 的连接)]

解决办法

以下内容主要转载自:https://blog.csdn.net/haoge921026/article/details/61920229,略有整理。

一、检查连接参数

检查Web.Config的连接字符串是否正确:

““
三种写法
// string constr = “server=.;database=myschool;integrated security=SSPI”;
// string constr = “server=.;database=myschool;uid=sa;pwd=sa”;
// strConnection = “data source=.;initial catalog=netdb;user id=sa;pwd=sa”;
““`

二,检查服务器配置

1. 检查 MSSQLSERVER 服务是否开启

2. SQL Server 网络配置

  1. 启用 TCP/IP 协议

    在配置工具中同时使用TCP/IP和named Pipes,点击”确定”,然后重启SQLserver服务;

  1. 右键右侧的 TCP/IP 的属性,启用供外部连接的那个 IP 地址和端口。

注意:TCP动态端口要为空!默认值是0,要删掉,然后在TCP端口一栏填入1433。

三、检查防火墙

如果数据库在本机,可以略过此步。如果数据库在远程机器,请先关闭掉远程机器的防火墙,如果连接成功则说明防火墙配置有问题,重新启用并放行1433端口。

总结

对SQL Server不熟的锅,这笔账不应该算到Windows上。不过说实在的,SQL Server默认使用动态端口也挺奇葩的。