你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn

Azure Cosmos DB 的 HTTP 状态代码

本文提供了 REST 操作返回的 HTTP 状态代码。

代码 说明
200 OK 下列 REST 操作之一成功:

- GET 资源上的 。
- PUT 资源上的 。
- POST 资源上的 。
- POST 用于执行存储过程的存储过程资源。
201 Created 用于创建资源的 POST 操作成功。
204 无内容 DELETE 操作成功。
400 错误请求 请求正文中的 JSON、SQL 或 JavaScript 无效。

此外,当资源的必需属性不存在或者未在对资源执行的 POST 或 PUT 正文中设置时,也会返回 400。

从一个集中的帐户更强的一致性 GET 操作的一致性级别被重写时,也会返回 400。

当需要 x-ms-documentdb-partitionkey 的请求不包含它时,也会返回 400。
401 未授权 当标头对请求的资源无效时 Authorization ,将返回 401。
403 禁止访问 授权令牌已过期。

在达到资源配额时,还会在创建资源的操作期间 POST 返回 403 代码。 例如,尝试将文档添加到已达到其预配存储的集合。

当已将存储过程、触发器或 UDF 标记为高资源使用情况且被阻止执行时,也可以返回 403。

在 Azure Cosmos DB 帐户上配置的防火墙规则阻止请求时,系统将返回 403 禁止访问错误。 从允许列表外部的计算机发出的任何请求都将收到 403 响应。

403.3 – 在手动故障转移操作期间,会为写入请求返回此状态代码。 驱动程序将此状态代码用作重定向代码,将写入请求转发到新的写入区域。 直接 REST 客户端必须在 DatabaseAccount 上执行 GET 操作,才能识别当前的写入区域,并将写入请求转发到该写入区域的终结点。
404 未找到 此操作正在尝试对不再存在的资源执行操作。 例如,该资源可能已被删除。
408 请求超时 此操作未在分配的时间内完成。 当存储过程、触发器或 UDF(查询内)未在最大执行时间内完成执行时,会返回此代码。
409 冲突 PUTPOST 操作中为某个资源提供的 ID 已被现有的资源占用。 请使用该资源的另一个 ID 来解决此问题。 对于分区集合,ID 在具有相同分区键值的所有文档中必须是唯一的。
412 先决条件故障 操作指定的 eTag 不同于服务器上的可用版本,即,发生了乐观并发错误。 请在读取资源的最新版本并更新请求中的 eTag 之后重试该请求。
413 实体太大 请求中的文档大小超过了请求允许的文档大小。 允许的最大文档大小为 2 MB。
423 已锁定 无法执行吞吐量缩放操作,因为另一个缩放操作正在进行。
424 失败的依赖项 文档操作在 TransactionalBatch 操作的事务范围内失败时,批处理中的所有其他操作都被视为失败的依赖项。 此状态代码指示当前操作由于同一事务范围内的另一失败而被视为失败。
429 请求过多 集合超出了预配的吞吐量限制。 在服务器指定重试间隔持续时间后,请重试该请求。 有关详细信息,请参阅 请求单位
449 重试 操作遇到暂时性错误。 此代码仅在写入操作时发生。 可以安全地重试该操作。
500 内部服务器错误 操作由于意外服务错误而失败。 联系支持人员。 请参阅提交Azure 支持问题
503 服务不可用 由于服务不可用,无法完成该操作。 这种情况可能由于网络连接或服务可用性问题而发生。 可以安全地重试该操作。 如果该问题仍然存在,请联系支持部门。

HTTP 子状态代码

在 Azure Cosmos DB 中使用 Customer-Managed 密钥 (CMK) 时,如果有任何错误,Azure Cosmos DB 会在响应中返回错误详细信息以及 HTTP 子状态代码。 可以使用此子状态代码来调试问题的根本原因。 目前,Azure Cosmos DB 支持以下子状态代码:

服务器端问题的子状态代码

Azure Cosmos DB 支持以下子状态代码来解决服务器端问题:

子状态代码 说明
4000 (无法获取/访问 Azure AD 令牌) 如果 Azure Cosmos DB 无法获取 Azure Active Directory (Azure AD) 访问令牌,则会发生此错误。 Azure Cosmos DB 需要此令牌才能访问密钥保管库。 发生此错误的原因可能是网络问题或数据中心问题,而用户无法执行操作。 创建 支持请求 以联系 Azure Cosmos DB 团队以解决此问题。
4001 (Azure AD 服务不可用) 如果 Azure AD 服务已关闭或出现问题,则会发生此错误。 可以检查 Azure 中断仪表板来验证是否存在任何现有中断。 这些中断通常在几个小时内解决。 最好联系 Azure AD 团队,让他们知道你看到的问题。 如果 Azure AD 团队发现没有问题,请创建 支持请求 以联系 Azure Cosmos DB 团队以解决问题。
4004 (密钥保管库 服务不可用) 如果 Azure Cosmos DB 尝试访问密钥保管库,但服务不可用,则会发生此错误。 这可能是由于网络问题无法到达密钥保管库,或者服务本身可能已关闭。 可以检查 Azure 中断仪表板来验证是否存在任何现有中断。 这些中断通常在几个小时内解决。 最好联系密钥保管库团队,让他们知道你看到的问题。 如果密钥保管库团队发现没有问题,请创建支持请求以联系 Azure Cosmos DB 团队以解决问题。
4007 (内部服务器错误) 这是一个内部服务器错误,如果输入字节不采用 base64 格式,则会发生此错误。
4008 (密钥保管库 内部服务错误) 如果 Azure Cosmos DB 无法访问密钥保管库,则会发生此错误。 原因可能是网络问题或密钥保管库服务本身已关闭。 可以检查 Azure 中断仪表板来验证是否存在任何现有中断。 这些中断通常在几个小时内解决。 最好联系密钥保管库团队,让他们知道你看到的问题。 如果密钥保管库团队发现没有问题,请联系 Azure Cosmos DB 团队寻求解决方案。
1013 (集合创建操作正在进行) 如果创建集合时遇到超时异常,请执行读取操作来验证是否已成功创建集合。 成功完成集合创建操作之前,读取操作将引发异常。 如果读取操作引发状态代码为 404 的异常,子状态代码为 1013,则表示集合创建操作仍在进行中。 重试读取操作,直到获得 200 或 201 状态代码,这些代码会告知你已成功创建集合。

最终用户问题的子状态代码

对于由最终用户引起的问题,Azure Cosmos DB 支持以下子状态代码:

子状态代码 说明
4002 (密钥保管库 不向 Azure AD 授予权限,或者密钥被禁用) 如果已从密钥保管库访问策略中删除 Azure Cosmos DB 标识,或者禁用了密钥,则会出现此问题。 此问题通常是由最终用户引起的。 如果发生此错误,请确保 Azure Cosmos DB 有权访问密钥保管库并且已启用密钥。
4003 (找不到密钥) 如果从密钥保管库中删除密钥,则会出现此问题。 此问题通常是由最终用户引起的。 将 Azure Cosmos DB 与客户管理的密钥配合使用的先决条件之一是,密钥保管库已启用软删除和清除保护。 这意味着可以恢复已删除的密钥并还原对 Azure Cosmos DB 的访问权限。
4005 (无法包装或解包密钥) 如果密钥保管库无法包装或解包密钥,则会发生此错误。 此问题通常是由最终用户引起的。 此错误的可能原因之一是密钥保管库无法使用最新密钥解码加密的 Blob,因为你已轮换密钥。 若要解决此错误,请启用最近禁用的任何密钥,大约一小时后即可解决。 如果超过 2 小时后未解决问题,请将问题传递给 Azure Cosmos DB。
4006 (密钥 URL 无效) 如果在密钥保管库 URL 中包含密钥版本,则预配期间会发生此错误。 此错误通常是由最终用户引起的。 若要解决此错误,请删除版本,然后重试。 例如,如果使用格式为 的 https://<KeyVaultName>.vault.azure.net/keys/<KeyName>/<KeyVersion>URL,请将其更新为 https://<KeyVaultName>.vault.azure.net/keys/<KeyName>/
4009 (密钥保管库 DNS 名称无法解析) 如果无法解析密钥保管库 DNS 名称,则会发生此错误,因为密钥保管库名称不正确。 此错误是由最终用户引起的。 若要解决此问题,请更正密钥保管库名称,然后重试。

另请参阅