找出身份验证和授权失败问题

已完成

重新配置、防火墙设置、连接超时或登录信息错误可能会导致连接失败。 此外,如果某些 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语句。

无法登录到服务器

发生用户“用户名”登录失败错误时,服务管理员可以执行以下步骤<>:

  1. 使用 sys.sql_logins 目录视图检查登录名是否已禁用。
  2. 如果登录名已禁用,请运行 ALTER LOGIN <User name> ENABLE; 启用登录名。
  3. 如果登录名不存在,请使用 CREATE LOGIN 语句创建该登录名。
  4. 连接要授予用户访问权限的数据库,并运行 CREATE USER 语句。
  5. 使用 ALTER ROLE 命令向用户分配角色,或使用 GRANT 命令向用户授予对一个或多个数据库对象的访问权限。

连接字符串

收到连接错误时,最好确保连接字符串正常工作。 预配新数据库或在对数据库服务进行基础结构更改后,这非常重要。

使用 Azure 门户可以检索与 Azure SQL 数据库交互所需的连接字符串。

  1. 在 Azure 门户中,选择“所有服务”,然后选择“SQL 数据库”。 筛选并选择数据库。

  2. 在数据库边栏选项卡上,选择“连接字符串”

    选定 SQL 数据库的连接字符串页面

  3. 通过包括密码或根据需要替换服务器名称来复制和编辑连接字符串。

  4. 参考客户端应用程序中更新的连接字符串。

若要详细了解 Azure SQL 数据库和 Azure SQL 托管实例的连接错误,请参阅排查 Azure SQL 数据库和 Azure SQL 托管实例的连接问题及其他错误