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

.NET Core 2.0+EF7连接SQL Server Express报错26:无法定位服务器/实例

解决.NET Core 2.0连接Windows Server 2003上SQL Server 2008R2 Express的问题

我之前碰到过类似的场景,结合你的描述——服务器资源管理器(依赖.NET Framework组件)和.NET Framework程序能正常连,但.NET Core项目直接连接报错,这大概率是因为.NET Core的System.Data.SqlClient在处理老版本SQL Server/Windows Server的兼容性逻辑上,和.NET Framework版本有差异。下面是几个亲测有效的解决方案:

1. 调整连接字符串或强制指定TLS版本

Windows Server 2003默认只支持TLS 1.0,而.NET Core的SqlClient默认可能尝试更高版本的TLS协议,导致握手失败:

  • 先在连接字符串里加这两个参数试试:Encrypt=False;TrustServerCertificate=True;,绕开证书验证和加密协议的问题。
  • 如果还是不行,在代码里强制指定使用TLS 1.0:
    System.Net.ServicePointManager.SecurityProtocol = System.Net.SecurityProtocolType.Tls;
    
  • 另外,试试用IP地址代替服务器名称,有时候.NET Core在老环境里的名称解析会出问题,比如把MyServer\SQLEXPRESS换成192.168.1.100\SQLEXPRESS。

2. 确认SQL Server的TCP/IP协议已启用

虽然.NET Framework程序能连,但.NET Core可能更依赖TCP/IP而非命名管道:

  • 打开SQL Server配置管理器,找到「SQL Server网络配置」->「SQLEXPRESS的协议」,确保TCP/IP是启用状态。
  • 右键TCP/IP选属性,在「IP地址」标签里找到IPAll部分,把TCP端口设为固定的1433(Express默认可能用动态端口,容易导致连接失败)。
  • 重启SQL Server服务让配置生效。

3. 升级SqlClient到Microsoft.Data.SqlClient

.NET Core 2.0自带的System.Data.SqlClient版本对老SQL Server的兼容性不够好,换成微软推荐的新版本试试:

  • 在NuGet包管理器里卸载System.Data.SqlClient,安装Microsoft.Data.SqlClient(找兼容.NET Core 2.0的最高版本,比如2.1.x系列就行)。
  • 代码里把using System.Data.SqlClient;改成using Microsoft.Data.SqlClient;,连接字符串不用改。

4. 检查防火墙和权限设置

  • 确认Windows Server 2003的防火墙允许1433端口(或你设置的SQL端口)的入站连接,别把.NET Core程序的连接请求挡住了。
  • 确保.NET Core程序运行用的账号,和能正常连接的.NET Framework程序用的账号权限一致,比如都是同一个域账号或者有SQL登录权限的账号。

最后提一句:Windows Server 2003和SQL Server 2008R2都已经停止官方支持了,从安全和长期维护的角度,建议尽早升级服务器和数据库版本哦。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.25 04:16:31