You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Azure App Service 无法连接已恢复的Azure SQL数据库,报错登录失败

排查修复步骤

1. 核对App Service连接字符串

  • 打开Azure门户进入对应App Service的「配置」页面,检查连接字符串的服务器地址、数据库名称、用户名、密码是否正确,注意Azure SQL登录用户名需要带上@<SQL服务器名称>后缀,不要漏写
  • 检查连接字符串是否有拼写错误,比如复制时多带的空格、特殊字符未正确转义
  • 如果使用托管身份连接SQL,确认托管身份已被授予对应数据库的访问权限,且连接字符串未错误配置硬编码的账号密码

2. 修复bacpac恢复导致的孤立用户问题

这是bacpac恢复后最常见的报错原因:SSMS用的服务器管理员账号不受影响,但应用使用的数据库级用户在恢复后和服务器登录名失去映射,成为孤立用户。
修复操作:
用SSMS以服务器管理员身份连接到恢复后的数据库,执行以下SQL命令:

-- 查询当前数据库所有孤立用户
sp_change_users_login @Action='Report';
-- 如果结果中存在你的应用账号 XXXXXXAppUser,执行下面的命令修复映射关系
sp_change_users_login @Action='update_one', @UserNamePattern='XXXXXXAppUser', @LoginName='XXXXXXAppUser';

如果是无服务器登录的包含用户,直接删除旧用户重新创建赋权即可:

DROP USER [XXXXXXAppUser];
CREATE USER [XXXXXXAppUser] FROM LOGIN [XXXXXXAppUser];
-- 按需赋予业务所需权限,示例为读写权限
ALTER ROLE db_datareader ADD MEMBER [XXXXXXAppUser];
ALTER ROLE db_datawriter ADD MEMBER [XXXXXXAppUser];

3. 确认网络访问规则

  • 即使开启了「允许Azure服务和资源访问此服务器」,也可以将App Service「属性」页中列出的所有出站IP,全部添加到SQL服务器的防火墙允许列表中,避免部分Azure服务段IP未被覆盖
  • 如果SQL服务器开启了专用终结点/私有链接,确认App Service和SQL服务器的网络连通正常,没有VNet ACL拦截1433端口的访问请求

4. 快速验证手段

可以打开App Service的「高级工具(Kudu)」控制台,执行命令tcpping <你的SQL服务器地址>.database.windows.net:1433,如果能连通说明是账号权限问题,不通则优先排查网络配置。


内容的提问来源于stack exchange,提问作者NSS

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.28 07:24:02