SuperAPI AI 工具集

diagnose-connection-errors

数据与分析

查看项目

更新于 10-16 00:31

技能介绍

用途:诊断 Azure SQL Database 在凭据被评估之前就遭拒绝的连接错误。核心方法是先读出错误号,再读其严重级别:错误号指明拒绝发生的层级,严重级别说明该层级的性质(11 对象不存在、14 安全、16 用户可修正配置、17 服务资源不足、20 及以上致命、10 信息性并在到达应用前转为 0)。

主要能力:区分常被混为一谈的 40532、18456、4060(前者是网关在到达数据库前拒绝,后两者分别是登录被拒和该库中无用户);识别 40615、40914 等防火墙与虚拟网络规则问题;识别 47072、47073、42101 等严重级别 10 的公网访问与 TLS 问题;识别 40613、10928/10929、40544、40501/49918/40197 等服务资源与瞬态错误;处理无编号的 TCP 层错误与证书链不受信任问题。

使用方式:用 sqlcmd 加 -b -m-1 让严重级别 10 的消息也显示编号,例如: sqlcmd -S your-server.database.windows.net,1433 -d your-database -U your-login -P "$SQL_PASSWORD" -N -l 30 -b -m-1 -Q "SELECT 1" 需要时在可用的连接上查询 sys.messages 核对编号、严重级别与原文。防火墙规则可用 az sql server firewall-rule list / create 查看与添加;服务器属性可用 az sql server show 查询 publicNetworkAccess 与 minimalTlsVersion。

适用场景:连接被立即拒绝、报“login failed”但原因不明、仅部分客户端网络失败、防火墙规则改动后仍失败、怀疑 TLS 或证书问题等。

限制:Azure SQL Database 不向客户端暴露登录失败的具体原因,也没有可读的服务器错误日志,因此不能承诺平台未公开的诊断。防火墙规则变更最长需约五分钟生效。0.0.0.0 到 0.0.0.0 并非互联网通配,而是 AllowAllWindowsAzureIps 特例。不要用 -C 或 TrustServerCertificate=true 绕过证书校验。本地 Azure SQL Database 容器没有 40xxx 系列对应的网关、IP 防火墙与资源治理,本地通过不能作为云端结论。部分编号与严重级别在 Microsoft Learn 上存在不一致,以错误号表为准。