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

使用不同凭据通过Windows身份验证连接SQL Server遇登录失败求助

.NET应用连接SQL Server数据库失败的解决方案

问题背景

拥有两个Windows账户:管理员账户(可登录SSMS并创建数据库arrbtr_vlimits3)和普通用户账户(无法登录SSMS),.NET应用连接数据库时两次尝试均失败:

  • 尝试1(Windows集成认证):
    packet size=4096;Server=localhost;Trusted_Connection=True;initial catalog=arrbtr_vlimits3
    
    报错:

    login failed for user [normal-user-id]

  • 尝试2(指定管理员账户密码):
    packet size=4096;persist security info=False;Server=[server-name];user id=[admin-id];password=[admin-pwd];initial catalog=arrbtr_vlimits3
    
    报错:

    login failed for user [admin-user-id]

失败原因

  1. 尝试1失败:.NET应用以普通Windows用户身份运行,该用户未被授予目标数据库的访问权限,集成认证模式下被SQL Server拒绝。
  2. 尝试2失败:管理员账户是Windows认证账户,并非SQL Server独立登录账户,无法通过user id/password的SQL身份认证方式登录。

解决方案

方案1:使用Windows集成认证(推荐)

给普通Windows用户分配数据库访问权限:

  1. 以管理员身份登录SSMS
  2. 展开服务器节点下的安全性 -> 登录名,右键选择「新建登录名」
  3. 在「常规」选项卡点击「搜索」,输入普通用户的Windows账户名(格式:[机器名]\[normal-user-id]或[域名]\[normal-user-id]),验证后确认
  4. 切换到「用户映射」选项卡,勾选arrbtr_vlimits3数据库,在下方「数据库角色成员身份」中勾选所需权限(如db_datareader、db_datawriter,按需添加)
  5. 保存设置后,继续使用尝试1的连接字符串即可。

方案2:使用SQL Server身份认证

若集成认证受限,可创建独立的SQL登录账户:

  1. 以管理员身份登录SSMS,右键服务器名 -> 属性 -> 安全性,确认服务器身份认证为「SQL Server和Windows身份认证模式」,若未开启则修改后重启SQL Server服务
  2. 展开安全性 -> 登录名,右键选择「新建登录名」,选择「SQL Server身份认证」,设置登录名和密码(取消勾选「强制密码过期」)
  3. 切换到「用户映射」选项卡,勾选arrbtr_vlimits3数据库并分配对应权限
  4. 修改连接字符串为:
    packet size=4096;Server=localhost;User ID=[新建SQL登录名];Password=[对应密码];Initial Catalog=arrbtr_vlimits3;Persist Security Info=False
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.21 14:15:13