Visual C#使用SQL Server身份认证连接数据库失败求助
问题分析与解决建议
你的问题根源很明确——连接字符串同时混合了两种认证模式的参数,导致SQL Server优先采用Windows身份认证,完全忽略了你指定的SQL Server账号密码,所以才会触发Windows关联账户登录失败的错误。
核心问题拆解
你写的连接字符串里同时包含两组互斥的配置:
Integrated Security = SSPI:这是启用Windows身份认证的参数,SQL Server会自动用当前运行程序的Windows账户去登录User ID = myID; Password = myPassword:这是SQL Server身份认证的专属参数
SQL Server会优先识别Integrated Security的配置,所以你指定的SQL账号密码根本没生效,自然会报Windows账户登录失败的错误。
直接解决方法
只保留SQL Server身份认证的参数,删除Windows认证相关配置,修改后的连接字符串如下:
String connStr = @"Data Source = myServerName; Initial Catalog = PMSystem; User ID = myID; Password = myPassword;";
(注意:你原字符串里的mySeverName多打了一个e,应该是myServerName;如果是本地SQL Server实例,可能需要写成localhost或者.\SQLEXPRESS这类格式,别忽略这个拼写细节)
额外检查项(针对小型草稿项目)
为了确保连接顺利,建议你再确认这几点:
- 打开SQL Server Management Studio,右键你的服务器 → 属性 → 安全性,确认服务器身份验证模式是SQL Server和Windows身份验证模式,如果之前是仅Windows模式,修改后需要重启SQL Server服务
- 确认
myID这个账号在SQL Server中已创建,并且拥有PMSystem数据库的访问权限(比如给它分配db_datareader角色,足够满足你的查询需求) - 核对密码是否输入正确,避免大小写或者特殊字符的拼写错误
内容的提问来源于stack exchange,提问作者Jack Henry
相关产品推荐
相关产品推荐

