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

C#客户端远程访问SQL Server 2014 Express报用户登录失败如何解决

问题排查解决步骤

第一步:修正连接字符串基础错误

  • 前两个连接字符串中的Data Source=.\\SQLEXPRESS里的.代表当前客户端本机,客户端运行时会尝试访问自身设备上的SQL Server实例,必然连接失败,直接弃用这两种写法。
  • 保留第三种写法的基础框架,优先替换为服务端直连网卡的固定静态IP,避免直连组网下的主机名解析失败,参考写法:
    // 硬编码在C#代码中的写法
    @"Data Source=tcp:192.168.xxx.xxx,49172;Initial Catalog=dbposrpc;User ID=sa;Password=12345678;"
    
    若写在App.config配置文件中无需转义,直接写单斜杠即可。如果必须用主机名连接,可在客户端的C:\Windows\System32\drivers\etc\hosts文件中添加服务端IP与主机名的映射规则,避免解析失败。

第二步:验证SQL Server身份认证配置

  • 登录服务端SQL Server Management Studio,右键实例→【属性】→【安全性】,确认已勾选SQL Server和Windows身份验证模式,而非仅Windows认证,修改后需重启SQL Server实例生效。
  • 检查sa账号状态:【安全性】→【登录名】→【sa】→【属性】,常规页确认密码和配置的一致,可取消勾选强制密码过期;状态页确认登录权限已启用。

第三步:确认程序运行环境权限

  • 不要直接从客户端的网络共享路径启动程序,先把整个程序目录复制到客户端本地硬盘任意位置,再运行exe测试。.NET Framework 4.5.2默认会限制网络共享位置运行的程序的远程资源访问权限,容易触发连接失败问题。
  • 如果需要使用Windows集成认证(trusted_connection=true),需要额外确认客户端当前登录的Windows账号,已经被添加到服务端SQL Server的登录名列表中,且授予了dbposrpc数据库的对应读写权限。

第四步:排查端口与防火墙配置

  • 服务端防火墙确认已添加入站规则,放行49172端口的TCP连接,同时放行SQL Server主进程sqlservr.exe的入站访问。
  • 客户端打开CMD执行telnet 服务端IP 49172,确认端口可以连通,没有被拦截。
  • 服务端打开SQL Server配置管理器,确认SQL Server网络配置→SQLEXPRESS的协议中TCP/IP已启用,IP地址页拉到最底部,确认TCP端口填写的是49172,动态端口留空,修改后重启SQL Server服务生效。

第五步:抓取详细报错定位

如果以上操作完成后仍报错,修改程序的数据库连接异常捕获逻辑,输出完整的错误堆栈和错误号:

  • 错误号18456:可查看服务端SQL Server的错误日志,定位具体失败原因,常见原因包括密码错误、sa账号禁用、默认数据库不存在、权限不足等。
  • 错误号40/53:仍为网络连通性问题,回头检查IP、端口、防火墙配置。

内容的提问来源于stack exchange,提问作者Muhammad Sarmad Mahmood Malik

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 11:00:02