找出身份验证和授权失败问题
重新配置、防火墙设置、连接超时或登录信息错误可能会导致连接失败。 此外,如果某些 Azure SQL 数据库或 SQL 托管实例资源超出容量,则无法连接。
暂时性故障
当 SQL 数据库服务中的繁重工作负载增加时,Azure 基础结构能够动态重新配置服务器,而客户端应用程序可能会在此操作期间失去与数据库的连接。
在计划事件或计划外事件的数据库重新配置期间发生暂时性故障。 这些事件简短,完成时间不应超过 60 秒。
下面是连接到 Azure SQL 数据库时应用程序可能收到的一些暂时性错误的列表:
- 无法打开在登录时请求的数据库“%.*ls”。 登录失败。
- 无法处理请求。 没有足够的资源来处理请求。
- 无法处理请求。 订阅“%ld”有太多操作正在进行。
注意
如需查看暂时性错误的完整列表,请参阅使用 Azure SQL 数据库和 Azure SQL 托管实例排查连接问题和其他错误。
如何监视暂时性连接错误
| 错误 | 操作 |
|---|---|
| 登录失败 | 在应用程序在 Microsoft Azure 服务仪表板上报告错误时查找中断。 |
| 数据库达到资源限制 | 仔细监视数据库的计算和存储资源,并在数据库达到资源限制时采取措施,以防止暂时性故障。 |
| 扩展身份验证失败 | 如果应用程序遇到的连接错误超过 60 秒或连接错误在给定的一天内多次发生,请通过 Azure 门户提交 Azure 支持请求。 |
重试逻辑
应用程序开发人员应预料到在与云服务(如 Azure SQL 数据库)集成时会出现定期暂时性故障,并实现重试逻辑,而不是向用户显示应用程序错误。 请务必在程序终止之前设置最大重试次数。
建议在首次重试时至少等待 5 秒。 每一个后续的重试都应该以指数形式增加延迟,最多不超过 60 秒。
注意
SELECT如果语句失败并出现 SQL 数据库或 SQL 托管实例中的暂时性错误,请避免直接重试。 请改为使用新连接来重试SELECT语句。
无法登录到服务器
发生用户“用户名”登录失败错误时,服务管理员可以执行以下步骤<>:
- 使用
sys.sql_logins目录视图检查登录名是否已禁用。 - 如果登录名已禁用,请运行
ALTER LOGIN <User name> ENABLE;启用登录名。 - 如果登录名不存在,请使用
CREATE LOGIN语句创建该登录名。 - 连接要授予用户访问权限的数据库,并运行
CREATE USER语句。 - 使用
ALTER ROLE命令向用户分配角色,或使用GRANT命令向用户授予对一个或多个数据库对象的访问权限。
连接字符串
收到连接错误时,最好确保连接字符串正常工作。 预配新数据库或在对数据库服务进行基础结构更改后,这非常重要。
使用 Azure 门户可以检索与 Azure SQL 数据库交互所需的连接字符串。
在 Azure 门户中,选择“所有服务”,然后选择“SQL 数据库”。 筛选并选择数据库。
在数据库边栏选项卡上,选择“连接字符串”。
通过包括密码或根据需要替换服务器名称来复制和编辑连接字符串。
参考客户端应用程序中更新的连接字符串。
若要详细了解 Azure SQL 数据库和 Azure SQL 托管实例的连接错误,请参阅排查 Azure SQL 数据库和 Azure SQL 托管实例的连接问题及其他错误。
