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

如何编写访问远程机器Microsoft SQL Server的有效连接字符串

SQL Server远程连接40错误排查方案

按以下优先级逐一排查,90%以上的同类问题都能解决:

  • 先配置目标数据库服务器的SQL Server协议
    • 远程登录数据库所在服务器,打开SQL Server配置管理器,找到你正在使用的SQL Server实例,在「SQL Server网络配置」-「对应实例的协议」里,启用TCP/IP协议,Named Pipes可以保持禁用,远程连接优先走TCP/IP协议,你当前报错默认走Named Pipes就是TCP连接失败后的回退行为。
    • 右键TCP/IP打开属性页,切到「IP地址」标签,拉到最底部的IPAll分组,确认TCP端口设置为1433(如果用自定义端口请记好后续要用),同时把列表里所有需要被访问的IP段对应的「已启用」选项改成「是」。
    • 所有协议配置修改完成后,必须在服务列表里重启对应SQL Server实例的服务,配置才会生效。
  • 放行服务器端防火墙端口
    • 检查目标服务器的Windows防火墙、第三方安全软件的入站规则,必须放通对应TCP端口:用默认1433端口的话,添加规则允许TCP 1433、UDP 1434端口的入站访问,其中UDP 1434是SQL Browser服务用的,用来解析命名实例。
    • 如果你用的是SQL Server命名实例且开了动态端口,要么直接把TCP端口固定成你自定义的值再放行对应端口,要么直接添加规则允许SQL Server实例对应的程序文件入站,避免动态端口被拦截。同时把SQL Browser服务的启动类型改成「自动」并保持运行状态。
  • 修正连接字符串配置
    • 你用Windows集成认证的话确实不需要填写user id和password,但要注意运行程序的Windows账号必须提前在目标SQL Server上分配好对应数据库的访问权限,同时连接串要明确写全参数,不要依赖本地默认配置,参考格式如下:
    // 默认实例、固定1433端口的连接写法
    conn = new SqlConnection("Data Source=目标服务器IP,1433; Initial Catalog=Database1; Integrated Security=True; Encrypt=False; TrustServerCertificate=True");
    // 命名实例的连接写法:Data Source=目标服务器IP\实例名,对应端口
    
    • 测试阶段建议先加上Encrypt=False; TrustServerCertificate=True参数,避免因服务器和本地的证书配置不匹配导致连接被拦截,等连通后再根据安全需求调整加密配置。
  • 连通性预验证
    • 不要一开始就跑代码调试,先在开发机上做基础连通性检查:打开命令提示符,先执行ping 目标服务器IP确认基础网络通,再执行telnet 目标服务器IP 1433(端口换成你实际配置的端口),如果telnet打开后是空白黑窗口没有报错,说明端口连通性正常;如果提示连接失败,问题一定出在网络策略、防火墙或者SQL Server端口配置上,和代码无关。
    • 可以先在本地用SSMS连接目标数据库,SSMS能正常连通的话,直接复制SSMS连接成功后生成的连接字符串到代码里用,能避免很多参数配置错误。
  • 关于你提到的Inner Exception「系统找不到指定的文件」:这个报错是因为本地客户端优先尝试通过命名管道找本地的SQL Server实例连接文件,TCP远程连接失败后触发回退查找逻辑才会抛出,TCP连通性问题解决后这个报错会同步消失。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.27 12:15:42