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

使用Windows域账号密码配置SQL Server连接字符串登录失败

连接失败原因及修正方案

核心问题是Windows认证模式的连接字符串配置逻辑写错了,按实际需求选对应方案调整即可:

  • 优先方案:和SSMS一样用当前登录Windows的域账号身份连接
    这种场景完全不需要在配置里写用户名密码,直接删掉User Id、Password两个参数,加上集成认证声明就行,修正后连接字符串:
    Server=Server\\Instance;Initial Catalog=TheDb;Trusted_Connection=True;Connect Timeout=30;Encrypt=False;TrustServerCertificate=False;ApplicationIntent=ReadWrite;MultiSubnetFailover=False;MultipleActiveResultSets=true
    
    只要启动应用的Windows账号就是平时打开SSMS用的域账号,这个配置直接就能连通。要注意:如果开启了Trusted_Connection=True(等价于Integrated Security=True),手动写的User Id和Password会被SQL客户端直接忽略,根本不会生效。
  • 特殊方案:必须在配置里硬编码指定其他域账号的账号密码连接(不推荐,明文存密码有安全风险)
    首先要把项目里的SQL客户端驱动换成新版Microsoft.Data.SqlClient,老版本的System.Data.SqlClient不支持在连接字符串里手动传入Windows账号密码,会默认读取当前进程的身份登录,必然报错。之后改两处配置:
    1. 显式加Integrated Security=False,关闭自动继承当前进程身份的逻辑
    2. 把原来MyDomain\\MyLogin的账号格式改成UPN格式MyLogin@MyDomain,不要用反斜杠分隔域和账号
      参考配置:
    Server=Server\\Instance;Integrated Security=False;User Id=MyLogin@MyDomain;Password=MyPassword;Initial Catalog=TheDb;Connect Timeout=30;Encrypt=False;TrustServerCertificate=False;ApplicationIntent=ReadWrite;MultiSubnetFailover=False;MultipleActiveResultSets=true
    

补充:原配置里的双反斜杠转义、连接超时、加密开关、多结果集这些参数的写法都是正确的,无需调整。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.29 17:57:19