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

.NET控制台EXE存于网络驱动器时SqlConnection连接失败求助

解决.NET控制台EXE在网络驱动器运行时无法连接SQL Server的问题

我之前碰到过完全一样的情况!本地运行一切正常,放到网络共享文件夹就报SQL Network Interfaces, error: 26找不到服务器,核心原因基本都是安全策略或身份上下文的差异导致的,给你几个靠谱的解决方向:

1. 检查UAC与网络驱动器映射的兼容性

如果你的程序需要以管理员权限运行,那问题大概率出在这:Windows的UAC会隔离管理员权限的进程和普通用户的网络驱动器映射——普通用户映射的网络盘,管理员进程根本看不到,这会导致程序的运行上下文异常,进而影响SQL连接的解析。

解决方法:

  • 要么取消程序的管理员权限要求(如果业务允许的话)
  • 要么用命令行以管理员身份映射网络驱动器:打开管理员CMD,执行net use Z: \\server\share /persistent:yes,这样管理员进程就能访问这个映射盘了

2. 禁用网络文件的UAC虚拟化

Windows会把从网络位置运行的程序标记为“潜在不安全”,自动启用文件虚拟化,可能导致程序读取的连接字符串或配置文件被重定向到虚拟存储,或者限制了网络连接权限。

解决步骤:

  • 右键点击网络共享里的EXE文件 → 属性 → 兼容性选项卡
  • 勾选“禁用UAC文件虚拟化”(如果看不到这个选项,可能需要先点击“更改所有用户的设置”)
  • 确定后重新运行程序

3. 修改SQL连接字符串的服务器指定方式

本地运行时你可能用的是相对实例名(比如.\SQLEXPRESS)或者服务器名称的NetBIOS名,但在网络驱动器运行时,程序的DNS解析上下文可能有变化,导致无法找到SQL实例。

建议修改连接字符串:

  • 改用SQL服务器的IP地址+端口号,比如Data Source=192.168.1.100,1433;Initial Catalog=YourDB;User ID=xxx;Password=xxx
  • 如果是域环境,也可以用完全限定域名(FQDN),比如Data Source=sqlserver.yourdomain.com\SQLEXPRESS;...

这样能绕过NetBIOS解析的问题,直接定位到SQL服务器。

4. 调整Windows安全策略,允许网络位置程序的网络访问

Windows默认对从网络共享运行的程序有严格的安全限制,可能阻止了它发起SQL连接:

  • 打开“本地组策略编辑器”(运行gpedit.msc)
  • 导航到计算机配置 → Windows设置 → 安全设置 → 本地策略 → 安全选项
  • 找到“用户账户控制:从网络位置运行的管理员批准模式”,设置为“已禁用”
  • 另外检查“用户账户控制:仅提升签名并验证的可执行文件”,如果是启用状态,建议改为“已禁用”(注意:这会降低一定安全性,按需操作)

5. 验证SQL Server的远程连接配置

虽然本地能连,但还是要确认SQL Server本身的远程连接设置没问题:

  • 打开SQL Server配置管理器,确保“SQL Server网络配置”里的TCP/IP协议是启用状态
  • 检查TCP/IP的属性,确认端口号(默认1433)没有被修改,并且监听所有IP地址
  • 确保Windows防火墙允许SQL Server的端口(1433)入站和出站

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.19 08:31:10