无法通过SQL身份验证连接Azure SQL Server,寻求技术解决方案
问题描述
连接Azure SQL Server时,AAD通用MFA身份验证可正常连接,但SQL身份验证始终失败。已确认IP在防火墙例外列表,在多设备、多网络环境及Azure VM中测试均无效。该功能此前正常,近几周出现问题,未做过配置变更。
错误调用栈:ectionOptions userOptions) at System.Data.SqlClient.SqlConnection.TryOpenInner(TaskCompletionSource`1 retry) at System.Data.SqlClient.SqlConnection.TryOpen(TaskCompletionSource`1 retry) at System.Data.SqlClient.SqlConnection.Open() at Microsoft.SqlServer.Management.SqlStudio.Explorer.ObjectExplorerService.ValidateConnection(UIConnectionInfo ci, IServerType server) at Microsoft.SqlServer.Management.UI.ConnectionDlg.Connector.ConnectionThreadUser()
排查与解决步骤
检查SQL登录账号状态
登录Azure门户,进入目标SQL Server的「安全性」→「登录名」,确认对应SQL账号未被禁用、未过期,且默认数据库存在且可访问。也可执行以下SQL语句验证:SELECT name, is_disabled, default_database_name FROM sys.sql_logins WHERE name = '你的SQL账号名';确认SQL身份验证启用状态
在Azure门户的SQL Server「设置」→「服务器配置」中,检查「SQL身份验证」是否处于启用状态,避免因后台变更导致该选项被关闭。验证数据库映射与权限
确保SQL账号已映射到目标数据库并拥有CONNECT权限,执行以下语句检查:USE 目标数据库名; SELECT name, has_dbaccess FROM sys.database_principals WHERE name = '你的SQL账号名';核对连接字符串参数
确认连接字符串中User ID(部分场景需格式为username@servername)、Password、Initial Catalog(目标数据库名)参数正确,无拼写错误。检查Azure防火墙隐式规则
在SQL Server「安全性」→「防火墙和虚拟网络」中,确认「允许Azure服务和资源访问此服务器」选项已开启,避免Azure VM内部流量被拦截。重置SQL账号密码
在Azure门户重置对应SQL账号的密码,排除密码哈希损坏或过期的问题,重置后立即测试连接。查看SQL Server错误日志
在SQL Server「监控」→「诊断设置」中开启日志收集,下载错误日志查找具体失败代码(如18456),根据代码定位锁定、权限不足等具体原因。
内容的提问来源于stack exchange,提问作者shuri17

