转载请注明文章出处: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 网络配置
-
启用 TCP/IP 协议
在配置工具中同时使用TCP/IP和named Pipes,点击”确定”,然后重启SQLserver服务;
- 右键右侧的 TCP/IP 的属性,启用供外部连接的那个 IP 地址和端口。
注意:TCP动态端口要为空!默认值是0,要删掉,然后在TCP端口一栏填入1433。
三、检查防火墙
如果数据库在本机,可以略过此步。如果数据库在远程机器,请先关闭掉远程机器的防火墙,如果连接成功则说明防火墙配置有问题,重新启用并放行1433端口。
总结
对SQL Server不熟的锅,这笔账不应该算到Windows上。不过说实在的,SQL Server默认使用动态端口也挺奇葩的。