使用不同凭据通过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_vlimits3login 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_vlimits3login failed for user [admin-user-id]
失败原因
- 尝试1失败:.NET应用以普通Windows用户身份运行,该用户未被授予目标数据库的访问权限,集成认证模式下被SQL Server拒绝。
- 尝试2失败:管理员账户是Windows认证账户,并非SQL Server独立登录账户,无法通过
user id/password的SQL身份认证方式登录。
解决方案
方案1:使用Windows集成认证(推荐)
给普通Windows用户分配数据库访问权限:
- 以管理员身份登录SSMS
- 展开服务器节点下的安全性 -> 登录名,右键选择「新建登录名」
- 在「常规」选项卡点击「搜索」,输入普通用户的Windows账户名(格式:
[机器名]\[normal-user-id]或[域名]\[normal-user-id]),验证后确认 - 切换到「用户映射」选项卡,勾选
arrbtr_vlimits3数据库,在下方「数据库角色成员身份」中勾选所需权限(如db_datareader、db_datawriter,按需添加) - 保存设置后,继续使用尝试1的连接字符串即可。
方案2:使用SQL Server身份认证
若集成认证受限,可创建独立的SQL登录账户:
- 以管理员身份登录SSMS,右键服务器名 -> 属性 -> 安全性,确认服务器身份认证为「SQL Server和Windows身份认证模式」,若未开启则修改后重启SQL Server服务
- 展开安全性 -> 登录名,右键选择「新建登录名」,选择「SQL Server身份认证」,设置登录名和密码(取消勾选「强制密码过期」)
- 切换到「用户映射」选项卡,勾选
arrbtr_vlimits3数据库并分配对应权限 - 修改连接字符串为:
packet size=4096;Server=localhost;User ID=[新建SQL登录名];Password=[对应密码];Initial Catalog=arrbtr_vlimits3;Persist Security Info=False
内容的提问来源于stack exchange,提问作者Samra
相关产品推荐
相关产品推荐

