SQL Server安装后 SSMS 无法连接:身份验证模式错误
问题现象:
 使用 SQL Server Management Studio (SSMS) 连接时提示 “Login failed for user 'sa'”,错误代码 18456,无法通过 SQL Server 身份验证登录。
快速诊断
-  检查身份验证模式: -  默认安装可能仅启用 Windows 身份验证。 
-  通过命令行验证: Get-ItemProperty "HKLM:\SOFTWARE\Microsoft\Microsoft SQL Server\MSSQL16.MSSQLSERVER\MSSQLServer\" -Name LoginMode-  返回值: -  1:仅 Windows 身份验证
-  2:混合模式(Windows + SQL Server 身份验证)
 
-  
 
-  
 
-  
-  确认 sa 账户状态: SELECT name, is_disabled FROM sys.sql_logins WHERE name = 'sa';-  is_disabled = 0表示账户已启用。
 
-  
解决方案
步骤 1:启用混合身份验证模式
-  使用 SQL Server 配置管理器: -  打开 SQL Server 配置管理器 > SQL Server 服务,右键实例选择 重新启动。 
-  右键实例选择 属性 > 安全性,设置 服务器身份验证 为 SQL Server 和 Windows 身份验证模式。 
 
-  
-  通过 T-SQL 修改(需 Windows 身份验证登录): EXEC sys.sp_configure 'show advanced options', 1; RECONFIGURE; EXEC sys.sp_configure 'user instance timeout', 0; -- 防止超时 EXEC sys.sp_configure 'user instances enabled', 0; EXEC sys.sp_configure 'xp_cmdshell', 1; -- 可选:启用必要功能 RECONFIGURE;
步骤 2:启用并重置 sa 账户
-  启用 sa 账户: ALTER LOGIN sa ENABLE;
-  设置强密码: ALTER LOGIN sa WITH PASSWORD = 'YourStrong!P@ssw0rd';
-  解除账户锁定(若存在): ALTER LOGIN sa WITH CHECK_POLICY = OFF, CHECK_EXPIRATION = OFF; ALTER LOGIN sa WITH CHECK_POLICY = ON, CHECK_EXPIRATION = ON;
步骤 3:重启 SQL Server 服务
Restart-Service -Name "MSSQLSERVER" -Force验证与日志分析
-  测试 sa 连接: -  在 SSMS 中使用以下参数连接: -  服务器类型:数据库引擎 
-  身份验证:SQL Server 身份验证 
-  登录名:sa 
-  密码: YourStrong!P@ssw0rd
 
-  
 
-  
-  检查错误日志: -  日志路径: 复制 C:\Program Files\Microsoft SQL Server\MSSQL16.MSSQLSERVER\MSSQL\Log\ERRORLOG 
-  搜索 Login succeeded for user 'sa'确认登录成功。
 
-  
扩展场景:网络协议与防火墙配置
-  若连接超时: -  启用 TCP/IP 协议: -  在 SQL Server 配置管理器 > SQL Server 网络配置 中启用 TCP/IP。 
 
-  
-  配置防火墙规则: New-NetFirewallRule -DisplayName "SQL Server 51433" -Direction Inbound -Protocol TCP -LocalPort 51433 -Action Allow
 
-  
-  若仍提示 18456错误:-  查看详细错误状态: SELECT * FROM sys.dm_exec_connections WHERE client_net_address = '<客户端IP>';
-  重置 SA 密码策略: ALTER LOGIN sa WITH PASSWORD = 'NewP@ss!2023' UNLOCK, CHECK_POLICY = ON;
 
-  
安全建议
-  禁用默认 SA 账户(生产环境): ALTER LOGIN sa DISABLE;-  创建独立管理账户替代: CREATE LOGIN AdminUser WITH PASSWORD = 'Secure!AdminPwd123'; ALTER SERVER ROLE sysadmin ADD MEMBER AdminUser;
 
-  
关于作者:
15年互联网开发、带过10-20人的团队,多次帮助公司从0到1完成项目开发,在TX等大厂都工作过。当下为退役状态,写此篇文章属个人爱好。本人开发期间收集了很多开发课程等资料,需要可联系我

