.NET Core连接字符串忽略UserId与Pwd,采用Windows身份验证登录问题
问题分析与解决
1. 账号密码被忽略的原因与解决
当连接字符串中同时存在Integrated Security=True(或等价的Trusted_Connection=True)和User Id/Password时,SQL Server驱动会强制使用Windows身份验证,直接忽略你指定的SQL账号和密码。这就是删除AdminUser这个SQL登录名后连接依然成功的原因——此时用的是当前运行程序的Windows用户身份登录SQL Server。
要使用SQL Server身份验证(账号密码登录),必须:
- 完全移除
Integrated Security和Trusted_Connection参数,或者将其设置为Integrated Security=False; - 确保连接字符串中仅保留
User Id、Password以及必要的其他参数,示例正确连接字符串:Data Source=.\SQLEXPRESS;Initial Catalog=TestDB;MultipleActiveResultSets=True;User Id=AdminUser;Password=Admin;TrustServerCertificate=True
2. 移除Integrated Security后出现的管道错误解决
你遇到的No process is on the other end of the pipe错误,通常和SQL Server的身份验证配置、服务状态或连接协议有关,可按以下步骤排查:
- 启用SQL Server身份验证模式:
打开SQL Server Management Studio,右键你的服务器→属性→安全性→选择“SQL Server和Windows身份验证模式”,保存后重启SQL Server (SQLEXPRESS)服务。 - 检查SQL Server服务状态:
打开Windows服务管理器(运行services.msc),确认SQL Server (SQLEXPRESS)服务处于启动状态,若未启动则手动启动。 - 修正连接字符串格式:
之前的连接字符串里用逗号分隔Integrated Security=True,TrustServerCertificate=True是错误的,所有参数必须用分号;分隔,即使移除Integrated Security,也要确保其他参数的分隔符正确。 - 验证实例名称与连接协议:
确认你的SQL Server实例名确实是SQLEXPRESS(可在SSMS的服务器名称处查看);打开SQL Server配置管理器,确保SQL Server Network Configuration下的Shared Memory、TCP/IP协议已启用。 - 检查SQL登录名权限:
重新创建AdminUser登录名后,确保它拥有TestDB数据库的访问权限(比如映射为该数据库的用户,并赋予必要的角色权限)。
内容的提问来源于stack exchange,提问作者Karan Parmar
相关产品推荐
相关产品推荐

