You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

求助:.NET应用无法通过Named Pipes连接SQL Server

解决Windows Forms应用通过Named Pipes连接SQL Server 2012失败的问题

问题场景

  • 客户端:Windows 10运行的Windows Forms应用
  • 服务器:Windows Server 2012上的SQL Server 2012默认实例(MSSQLSERVER)
  • 核心问题:TCP/IP初始连接速度慢,尝试切换Named Pipes协议后反复报错:
    The server was not found or was not accessible... Named Pipes Provider, error: 40 - Could not open a connection to SQL Server
    
  • 已完成排查:
    • 客户端与服务器防火墙均已关闭
    • SQL Server已启用Shared Memory、Named Pipes、TCP/IP协议
    • Named Pipes使用默认配置,未设置别名
    • 已重启SQL Server服务及服务器
    • Visual Studio中切换连接高级设置的「Network Library」为Named Pipes仍连接失败

可行解决步骤

1. 确认Named Pipes的实际管道名称

登录SQL Server服务器,打开SQL Server配置管理器:

  • 展开「SQL Server网络配置」→「MSSQLSERVER的协议」
  • 右键点击「Named Pipes」→「属性」,查看「管道名称」(默认值为\\.\pipe\sql\query)
  • 客户端连接字符串必须使用该实际管道名称,格式示例:
    Server=np:\\<服务器主机名/IP>\<管道名称>;Database=你的数据库名;Integrated Security=True;
    
    比如服务器主机名为MyServer,则连接字符串为:
    Server=np:\\MyServer\pipe\sql\query;Database=TestDB;Integrated Security=True;
    

2. 验证SMB协议的连通性

Named Pipes依赖SMB协议传输数据,需确保客户端与服务器SMB通信正常:

  • 在客户端打开命令提示符(管理员权限),执行:
    net view \\<服务器主机名/IP>
    
    若能列出服务器共享资源,说明SMB基础连通正常;若失败,检查服务器的Server服务和客户端的Workstation服务是否已启动。
  • 也可尝试直接访问服务器管道:
    dir \\<服务器主机名/IP>\pipe\
    
    若能列出管道列表,说明管道可被客户端访问。

3. 检查SQL Server Browser服务状态

即使是默认实例,SQL Server Browser服务也可能影响Named Pipes的协议发现:

  • 在服务器上打开「服务」管理器,找到「SQL Server Browser」服务
  • 确保服务处于运行状态,启动类型设置为「自动」,之后重启SQL Server服务。

4. 用IP地址替代主机名

若主机名解析存在问题,尝试在连接字符串中使用服务器的IP地址:

Server=np:\\192.168.1.100\pipe\sql\query;Database=TestDB;Integrated Security=True;

5. 确认登录账号的权限

确保用于连接的账号(Windows身份验证或SQL身份验证)具备Named Pipes连接权限:

  • 打开SQL Server Management Studio,登录服务器
  • 展开「安全性」→「登录名」,右键点击目标账号→「属性」
  • 切换到「状态」页,确认「登录」选项为「启用」
  • 切换到「服务器角色」页,确保账号拥有必要权限(如public或业务所需的角色)

6. 检查服务器注册表的SMB配置

Windows Server 2012的SMB版本可能影响Named Pipes:

  • 服务器上打开注册表编辑器(regedit),定位到:
    HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\LanmanServer\Parameters
    
  • 查看SMB1(DWORD类型)值,建议设置为0(禁用SMB1,Win10默认禁用SMB1)或2(自动模式)
  • 修改后重启服务器的LanmanServer服务:
    net stop lanmanserver
    net start lanmanserver
    

内容的提问来源于stack exchange,提问作者popo7ich

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.08 05:54:51