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

客户端连接SQL Server报错:不可信域登录无法使用集成身份认证

报错原因

你收到的错误提示为:

Login failed. The login is from an untrusted domain and cannot be used with integrated authentication

即使你在连接字符串中显式指定了Integrated Security=False,依然触发该错误,常见原因如下:

  • 连接字符串参数被代码逻辑/配置覆盖:你代码中声明的连接字符串可能被其他公共逻辑、配置文件(app.config/web.config)中的连接配置修改,最终生效的参数实际开启了集成认证
  • 客户端SQL配置强制集成认证:客户端设备上的SQL Server Native Client配置、本地组策略强制启用了集成认证,会覆盖连接字符串中的显式配置
  • 旧版SqlClient组件bug:你项目引用的System.Data.SqlClient版本过旧,存在已知的参数解析bug,会忽略Integrated Security=False的配置
  • 服务端未开启混合认证模式:SQL Server服务端仅开启了Windows认证模式,即使你传入SQL账号密码,也会优先走集成认证流程,跨域/无域环境下就会触发该错误
  • 跨域/工作组环境认证优先级问题:客户端和SQL Server不在同一个信任域/同一个工作组时,旧版SQL客户端会先尝试集成认证,认证请求被网络策略拦截后会直接抛出错误,不会切换到SQL账号认证流程
解决方案
  • 首先校验实际生效的连接字符串,在con.Open()执行前打印输出con.ConnectionString,确认最终参数包含Integrated Security=False,没有被其他逻辑追加集成认证相关参数,如发现被篡改,排查所有修改连接配置的代码和配置文件
  • 替换连接字符串的集成认证参数,将Integrated Security=False替换为等效的Trusted_Connection=no,同时追加Persist Security Info=True避免认证信息缓存,修改后的代码示例如下:
Using con As New SqlConnection("Data Source=x,1433; Network Library=DBMSSOCN; Initial Catalog=Test; User ID=joe; Password=momma; Trusted_Connection=no; Persist Security Info=True")
    If con.State = ConnectionState.Closed Then
        con.Open()
    End If
End Using
  • 检查客户端SQL配置:打开客户端的「SQL Server配置管理器」,进入「SQL Native Client 配置」-「客户端协议」的属性页,确认没有强制开启集成认证的配置,同时排查客户端本地组策略,是否存在SQL客户端认证相关的强制规则
  • 确认SQL Server服务端开启混合认证:登陆SQL Server实例,在服务属性-安全页中,确认认证模式为「SQL Server和Windows认证模式」,如仅开启Windows认证需要修改后重启SQL服务生效
  • 升级SqlClient组件:将项目引用的System.Data.SqlClient类库升级到最新稳定版,修复已知的参数解析bug
  • 跨域/工作组环境下,在客户端hosts文件中添加SQL Server的IP和域名映射,避免客户端解析服务端地址时触发域认证流程

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 10:24:05