你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn。
Batch 服务的 REST API 操作返回标准 HTTP 状态代码,如 HTTP/1.1 状态代码定义中所述。
API 操作还可以返回其他错误信息,以便为开发人员提供有关错误的详细信息。 例如,以下错误响应指示在请求 URI 上指定的查询参数无效,并提供有关无效的参数名称和值以及错误原因的其他信息。
{
  "code": "InvalidQueryParameterValue",
  "message": {
      "lang": "en-us",
      "value": "Value for one of the query parameters specified in the request URI is invalid"
  },
  "values": [{
      "key": "QueryParameterName",
      "value": "state"
  }, {
      "key": "QueryParameterValue",
      "value": "deleted"
  }, {
      "key": "Reason",
      "value": "invalid state"
  }]
}
以下部分提供了批处理服务的错误代码列表:
常见的 REST API 错误代码
针对批处理服务的操作可能返回下表中列出的错误代码。
| 错误代码 | HTTP 状态代码 | 用户消息 | 
|---|---|---|
| ConditionNotMet | 未修改 (304) | 不符合在条件标头中指定的条件,无法执行读取操作。 | 
| MissingRequiredHeader | 错误的请求 (400) | 未指定所需的 HTTP 标头。 | 
| MissingRequiredProperty | 错误的请求 (400) | 未在请求正文中指定某个必需的属性。 | 
| UnsupportedHeader | 错误的请求 (400) | 不支持在请求中指定的 HTTP 标头之一。 | 
| UnsupportedProperty | 错误的请求 (400) | 不支持在请求正文中指定的属性之一。 | 
| InvalidHeaderValue | 错误的请求 (400) | 为 HTTP 标头之一提供的值的格式不正确。 | 
| InvalidPropertyValue | 错误的请求 (400) | 在请求正文中为某个属性提供的值无效。 | 
| MissingRequiredQueryParameter | 错误的请求 (400) | 没有为此请求指定所需的查询参数。 | 
| UnsupportedQueryParameter | 错误的请求 (400) | 不支持在请求 URI 中指定的查询参数之一。 | 
| InvalidQueryParameterValue | 错误的请求 (400) | 为请求 URI 中的查询参数之一指定的值无效。 | 
| OutOfRangeQueryParameterValue | 错误的请求 (400) | 在请求 URI 中指定的查询参数超过了允许范围。 | 
| RequestUrlFailedToParse | 错误的请求 (400) | 无法解析请求中的 URL。 | 
| InvalidUri | 错误的请求 (400) | 请求的 URI 不表示服务器上的任何资源。 | 
| InvalidHttpVerb | 错误的请求 (400) | 服务器无法识别指定的 HTTP 动词。 | 
| EmptyMetadataKey | 错误的请求 (400) | 元数据键-值对之一的键是空的。 | 
| InvalidRequestBody | 错误的请求 (400) | 指定的请求正文语法无效。 | 
| OutOfRangeInput | 错误的请求 (400) | 请求输入之一超过范围。 | 
| InvalidAuthenticationInfo | 错误的请求 (400) | 提供的身份验证信息格式不正确。 验证 Authorization 标头的值。 | 
| InvalidInput | 错误的请求 (400) | 某个请求输入无效。 | 
| InvalidMetadata | 错误的请求 (400) | 指定的元数据无效。 它包含不允许使用的字符。 | 
| MetadataTooLarge | 错误的请求 (400) | 指定的元数据大小超过允许的最大大小。 | 
| MultipleConditionHeadersNotSupported | 错误的请求 (400) | 不支持多个条件标头。 | 
| AuthenticationFailed | 禁止访问 (403) | 服务器无法对请求进行身份验证。 验证 Authorization 标头的值格式是否正确,以及是否包含签名。 | 
| InsufficientAccountPermissions | 禁止访问 (403) | 访问的帐户没有足够的权限执行此操作。 | 
| AccountIsDisabled | 禁止访问 (403) | 已禁用指定的帐户。 | 
| ResourceNotFound | 找不到 (404) | 指定的资源不存在。 | 
| UnsupportedHttpVerb | 不允许使用方法 (405) | 资源不支持指定的 HTTP 动词。 | 
| MissingContentLengthHeader | 需要指定长度 (411) | 未指定 Content-Length 标头。 | 
| ConditionNotMet | 前提条件失败 (412) | 不符合在条件标头中指定的条件,无法执行写入操作。 | 
| RequestBodyTooLarge | 请求实体太大 (413) | 请求正文大小超过允许的最大大小。 | 
| InvalidRange | 请求的范围不符合条件 (416) | 指定的范围对当前资源大小无效。 | 
| InternalError | 内部服务器错误 (500) | 服务器遇到内部错误。 请重试请求。 | 
| OperationTimedOut | 内部服务器错误 (500) | 无法在允许的时间内完成该操作。 | 
| ServerBusy | 服务不可用 (503) | 服务器当前无法接收请求。 请重试请求。 | 
批处理服务错误代码
针对批处理服务的操作可能返回下表中列出的错误代码。
| 错误代码 | HTTP 状态代码 | 用户消息 | 
|---|---|---|
| UnsupportedRequestVersion | BadRequest (400) | 不支持指定的请求版本。 | 
| InvalidAutoScalingSettings | BadRequest (400) | 指定的自动缩放设置无效。 | 
| AutoScalingFormulaSyntaxError | BadRequest (400) | 指定的自动缩放公式存在语法错误。 | 
| AutoScalingFormulaTooLong | BadRequest (400) | 指定的自动缩放公式超出了长度限制。 | 
| OSVersionNotFound | BadRequest (400) | 指定的 OS 版本不存在。 | 
| OSVersionDisabled | BadRequest (400) | 指定的 OS 版本已禁用。 | 
| OSVersionExpired | BadRequest (400) | 指定的 OS 版本已过期。 | 
| PoolVersionEqualsUpgradeVersion | BadRequest (400) | 池已使用给定的版本。 | 
| PoolNotEligibleForOSVersionUpgrade | BadRequest (400) | 指定的池不适合进行 OS 版本升级。 | 
| PoolNotFound | NotFound (404) | 指定的池不存在。 | 
| NodeNotFound | NotFound (404) | 指定的节点不存在。 | 
| JobScheduleNotFound | NotFound (404) | 指定的作业计划不存在。 | 
| JobNotFound | NotFound (404) | 指定的作业不存在。 | 
| TaskNotFound | NotFound (404) | 指定的任务不存在。 | 
| FileNotFound | NotFound (404) | 指定的文件不存在。 | 
| NodeUserNotFound | NotFound (404) | 指定的节点用户不存在。 | 
| CertificateNotFound | NotFound (404) | 指定的证书不存在。 | 
| JobPreparationTaskNotRunOnNode | NotFound (404) | 作业准备任务未在指定的节点上运行。 | 
| JobReleaseTaskNotRunOnNode | NotFound (404) | 作业发布任务未在指定的节点上运行。 | 
| NodeAgentSKUNotFound | NotFound (404) | 指定的节点代理 SKU 不存在。 | 
| OperationInvalidForCurrentState | 冲突 (409) | 指定的操作对于当前资源状态无效。 | 
| PoolBeingDeleted | 冲突 (409) | 指定的池已标记为删除,并且正在回收。 | 
| PoolBeingResized | 冲突 (409) | 正在调整指定池的大小 | 
| PoolBeingCreated | 冲突 (409) | 正在创建指定的池。 | 
| NodeBeingCreated | 冲突 (409) | 正在创建指定的节点 | 
| NodeBeingStarted | 冲突 (409) | 正在启动指定的节点 | 
| NodeBeingReimaged | 冲突 (409) | 正在重置指定的节点的映像 | 
| NodeBeingRebooted | 冲突 (409) | 正在重新启动指定的节点 | 
| NodeStateUnusable | 冲突 (409) | 指定节点的状态不可用 | 
| JobScheduleBeingTerminated | 冲突 (409) | 指定的作业计划即将终止。 | 
| JobScheduleBeingDeleted | 冲突 (409) | 指定的作业计划已标记为要删除,并且正在回收。 | 
| CertificateBeingDeleted | 冲突 (409) | 指定的证书已标记为删除,并且正在删除。 | 
| PoolExists | 冲突 (409) | 指定的池已存在。 | 
| JobScheduleExists | 冲突 (409) | 指定的作业计划已存在。 | 
| NodeUserExists | 冲突 (409) | 指定的节点用户已存在。 | 
| JobExists | 冲突 (409) | 指定的作业已存在。 | 
| NodeUserExists | 冲突 (409) | 指定的节点用户已存在。 | 
| CertificateExists | 冲突 (409) | 指定的证书已存在。 | 
| JobScheduleDisabled | 冲突 (409) | 指定的作业计划处于禁用状态。 | 
| JobScheduleCompleted | 冲突 (409) | 指定的作业计划已处于已完成状态。 | 
| JobBeingTerminated | 冲突 (409) | 正在终止指定的作业。 | 
| JobBeingDeleted | 冲突 (409) | 指定的作业已标记为删除,并且正在进行垃圾回收。 | 
| JobDisabled | 冲突 (409) | 指定的作业处于禁用状态。 | 
| JobCompleted | 冲突 (409) | 指定的作业已处于已完成状态。 | 
| JobNotActive | 冲突 (409) | 指定的作业不处于活动状态。 | 
| TaskExists | 冲突 (409) | 指定的任务已存在。 | 
| TaskCompleted | 冲突 (409) | 指定的任务已处于已完成状态。 | 
| TaskNotCompleted | 冲突 (409) | 指定的任务未处于已完成状态,并且只能对已完成的任务执行请求的操作。 | 
| TaskSucceeded | 冲突 (409) | 指定的任务已成功完成,并且无法对成功的任务执行请求的操作。 | 
| TaskFilesUnavailable | 冲突 (409) | 指定的任务的文件不可用。 | 
| TaskFilesCleanedup | 冲突 (409) | 指定的任务的文件已清理。 | 
| ActiveJobAndScheduleQuotaReached | 冲突 (409) | 已达到帐户的活动作业和计划配额。 | 
| PoolQuotaReached | 冲突 (409) | 已达到帐户的池配额。 | 
| UpgradePoolVersionConflict | 冲突 (409) | 池正在升级到其他版本。 | 
| JobPreparationTaskNotSpecified | 冲突 (409) | 指定的作业没有作业准备任务。 | 
| JobReleaseTaskNotSpecified | 冲突 (409) | 指定的作业没有作业释放任务。 | 
| TaskIdSameAsJobPreparationTask | 冲突 (409) | 指定的任务 ID 与作业准备任务相同。 | 
| TaskIdSameAsJobReleaseTask | 冲突 (409) | 指定的任务 ID 与作业发布任务相同。 | 
| JobWithSameIdExists | 冲突 (409) | 存在具有指定作业计划 ID 的作业。 作业和作业计划不能具有相同的 ID。 | 
| JobScheduleWithSameIdExists | 冲突 (409) | 存在具有指定作业 ID 的作业计划。 作业和作业计划不能具有相同的 ID。 | 
| NodeAlreadyInTargetSchedulingState | 冲突 (409) | 指定的节点已处于目标计划状态。 | 
| OperationNotValidOnNode | 冲突 (409) | 指定的操作在节点上无效。 | 
| OperationNotValidOnPool | 冲突 (409) | 指定的操作在池中无效。 | 
| IOError | 禁止访问 (403) | 访问指定的资源时发生 I/O 错误。 | 
| TooManyEnableAutoScaleRequests | ServiceUnavailable (503) | 在池上发出过多的“启用池自动缩放”请求。 | 
| ApplicationNotFound | 找不到 (404) | 指定的应用程序不存在。 | 
| InvalidApplicationPackageReferences | 冲突 (409) | 无法满足一个或多个应用程序包引用。 如果应用程序 ID 或版本不存在或未处于活动状态,或者引用未指定版本且未配置默认版本,则会发生此情况。 | 
| TaskDependenciesNotSpecifiedOnJob | 错误的请求 (400) | 已将任务指定为依赖于其他任务,但作业未指定它将使用任务依赖项。 | 
| TaskDependencyListTooLong | 错误的请求 (400) | 已将任务指定为依赖于其他任务,但依赖项列表太长,无法存储。 存储的总长度限制为 64000 个字符:任务 ID 的总长度必须略小于此长度,才能产生内部存储开销。 如果遇到此错误,请考虑改用任务范围依赖项。 | 
| TaskDependencyRangesTooLong | 错误的请求 (400) | 根据多个任务 ID 范围指定任务,并且范围列表太长,无法存储。 请注意,问题不在于范围的大小,而在于范围的数量。 | 
作业/任务计划错误代码
如果 Batch 服务在节点上启动任务时遇到错误,则会将该任务标记为已完成。 错误信息在“列出与任务关联的文件”和“获取有关任务 API 的信息”响应正文的元素内failureInfo返回。
同样,如果批处理服务在启动作业时遇到错误,会将该作业标记为已完成。 此计划错误信息是在 schedulingError 批处理 API 中 获取作业相关信息 的响应正文的元素内返回的。
下表提供了任务计划错误类别的列表。
| 类别 | 说明 | 
|---|---|
| UserError | 用户提供的任务规范中的错误。 | 
| ServerError | 批处理服务遇到的、使它无法计划任务的错误。 | 
下面是 Batch 服务返回的示例预处理错误。
{
  "preProcessingError": {
    "category": "UserError",
    "code": "BlobNotFound",
    "message": "The specified blob does not exist.",
    "values": {
      "name": "FilePath",
      "value": "myfile.txt"
    }
  }
}
下表提供了 Batch 服务可能返回的作业计划错误代码列表。
| 错误代码 | 类别 | 用户消息 | 
|---|---|---|
| InvalidCertificatesInAutoPool | UserError | 在自动池规范中指定的证书引用无效。 | 
| AutoPoolCreationFailedWithQuotaReached | UserError | 达到了帐户的池配额。 | 
| InvalidApplicationPackageReferencesInAutoPool | UserError | 为池指定的一个或多个应用程序包无效。 | 
| InvalidAutoScaleFormulaInAutoPool | UserError | 指定的自动缩放设置无效。 | 
| InvalidAutoPoolSettings | UserError | 指定的自动池设置无效。 | 
| JobBeingTerminated | UserError | 无法启动任务,因为正在终止关联的作业。 | 
| 未知 | ServerError | 发生了未知的计划错误。 | 
下表提供了 Batch 服务可能返回的任务计划错误代码列表。
| 错误代码 | 类别 | 用户消息 | 
|---|---|---|
| BlobNotFound | UserError | 找不到指定的 Azure Blob () 之一。 | 
| BlobAccessDenied | UserError | 拒绝访问某个指定的 Azure Blob () 。 | 
| BlobDownloadTimedOut | ServerError | 下载指定的 Azure Blob () 时遇到超时。 | 
| BlobDownloadMiscError | ServerError | 下载指定的 Azure Blob () 时遇到其他错误。 | 
| ResourceDirectoryCreateFailed | ServerError | 为任务创建资源目录时遇到失败。 | 
| ResourceFileCreateFailed | ServerError | 创建资源文件时遇到失败。 | 
| ResourceFileWriteFailed | ServerError | 写入资源文件时失败。 | 
| CommandProgramNotFound | UserError | 找不到指定的命令程序。 | 
| CommandLaunchFailed | UserError | 未能启动指定的命令行。 | 
| TaskEnded | UserError | 任务已由用户请求结束。 | 
| MaxInternalRetryCountReached | UserError | 指定的任务已达到最大内部重试计数。 | 
| TaskSchedulingConstraintFailed | UserError | 无法在与作业关联的池上计划任务 | 
| DiskFull | ServerError | 选择的节点上没有足够的磁盘空间来运行任务。 | 
| 未知 | ServerError | 发生未知计划错误。 |