数据访问错误疑难解答

适用于:Python SDK azure-ai-ml v2(当前版本)

本文介绍如何使用 Azure 机器学习 SDK 识别和解决已知的数据访问问题。

错误代码

数据访问错误代码是分层的。 错误代码通过英文句号字符 . 进行分隔,并会随着可用段的增加而变得更加明确。

ScriptExecution.DatabaseConnection

ScriptExecution.DatabaseConnection.NotFound

数据存储中定义的数据库或服务器找不到,或许已不再存在。 请在 Azure 门户中检查该数据库是否仍然存在,或者 Azure 机器学习工作室数据存储详细信息页面是否与该数据库关联。 如果该数据库或服务器不存在,则使用相同的名称重新创建它就可以使用现有的数据存储。 若要使用新的服务器名称或数据库,则必须删除现有数据存储并重新创建一个,以使用新名称。

ScriptExecution.DatabaseConnection.Authentication

尝试连接到数据库时身份验证失败。 身份验证方法存储在数据存储中,它支持 SQL 身份验证、服务主体或非存储凭据(基于标识的访问)。 在 Azure 机器学习工作室中预览数据时,启用工作区 MSI 会使得身份验证使用该工作区 MSI。 需要为服务主体和工作区 MSI(如果适用)创建 SQL Server 用户,并且必须向该用户授予经典数据库权限。 有关详细信息,请访问此文

请与数据管理员联系,以验证或向服务主体或用户标识添加正确的权限。

错误还包括:

  • ScriptExecution.DatabaseConnection.Authentication.AzureIdentityAccessTokenResolution.InvalidResource
    • 找不到订阅和资源组下的服务器。 请检查数据存储中定义的订阅 ID 和资源组是否与服务器的相应值匹配,并在必要时更新数据存储值。

      注意

      请使用服务器(而非工作区)的订阅 ID 和资源组。 如果数据存储跨订阅或跨资源组服务器,则这些内容将有所不同。

  • ScriptExecution.DatabaseConnection.Authentication.AzureIdentityAccessTokenResolution.FirewallSettingsResolutionFailure
    • 该标识无权读取目标服务器的防火墙设置。 请与数据管理员联系,以获取工作区 MSI 的 MSI 读取者角色权限。

ScriptExecution.DatabaseQuery

ScriptExecution.DatabaseQuery.TimeoutExpired

执行的 SQL 查询耗时过长且超时。你可以在创建数据资产时指定超时值。 如果需要新的超时,必须创建新资产,或者必须创建当前资产的新版本。 Azure 机器学习工作室 SQL 预览版有一个固定的查询超时值,但作业始终采用定义的值。

ScriptExecution.StreamAccess

ScriptExecution.StreamAccess.Authentication

尝试连接到存储帐户时身份验证失败。 身份验证方法存储在数据存储中,可支持帐户密钥、SAS 令牌、服务主体或非存储凭据(基于标识的访问),具体取决于数据存储类型。 在 Azure 机器学习工作室中预览数据时,启用工作区 MSI 会使得身份验证使用工作区 MSI。

请与数据管理员联系,以验证或向服务主体或用户标识添加正确的权限。

重要

如果使用基于标识的访问,则所需的 RBAC 角色是存储 Blob 数据读取者。 如果对 Azure 机器学习工作室预览版使用工作区 MSI,则所需的 RBAC 角色是“Storage Blob Data Reader”和“Reader”。

错误还包括:

  • ScriptExecution.StreamAccess.Authentication.AzureIdentityAccessTokenResolution.FirewallSettingsResolutionFailure
    • 该标识无权读取目标存储帐户的防火墙设置。 请与数据管理员联系,以获取工作区 MSI 的读取者角色权限。
  • ScriptExecution.StreamAccess.Authentication.AzureIdentityAccessTokenResolution.PrivateEndpointResolutionFailure
    • 目标存储帐户使用的是虚拟网络,但登录会话未通过专用终结点连接到工作区。 请将专用终结点添加到工作区,并确保存储虚拟网络设置允许专用终结点的虚拟网络或子网。 请将登录会话的公共 IP 添加到存储防火墙允许列表。
  • ScriptExecution.StreamAccess.Authentication.AzureIdentityAccessTokenResolution.NetworkIsolationViolated
    • 目标存储帐户的防火墙设置不允许此数据访问。 请检查你的登录会话是否在与存储帐户兼容的网络设置内。 如果使用工作区 MSI,请检查它是否具有读取者访问权限来访问存储帐户和与其关联的专用终结点。
  • ScriptExecution.StreamAccess.Authentication.AzureIdentityAccessTokenResolution.InvalidResource
    • 找不到订阅和资源组下的存储帐户。 请检查数据存储中定义的订阅 ID 和资源组是否与服务器的相应值匹配,并在必要时更新数据存储值。

      注意

      请使用服务器(而非工作区)的订阅 ID 和资源组。 如果数据存储跨订阅或跨资源组服务器,则这些内容将有所不同。

ScriptExecution.StreamAccess.NotFound

指定的文件或文件夹路径不存在。 请在 Azure 门户中检查提供的路径是否存在;如果使用的是数据存储,则请检查是否使用了正确的数据存储(包括数据存储的帐户和容器)。 如果存储帐户是已启用 HNS 的 Blob 存储(也称为 ADLS Gen2)或者是 abfs[s] URI,则该存储 ACL 可能会限制特定文件夹或路径。 此错误显示为“NotFound”错误,而不显示为“身份验证”错误。

ScriptExecution.StreamAccess.Validation

数据访问请求中存在验证错误。

错误还包括:

  • ScriptExecution.StreamAccess.Validation.TextFile-InvalidEncoding
    • 用于分隔文件分析的已定义编码不适用于基础数据。 请更新 MLTable 的编码,使其与文件的编码相匹配。
  • ScriptExecution.StreamAccess.Validation.StorageRequest-InvalidUri
    • 请求的 URI 格式不正确。 我们支持 abfs[s]wasb[s]httpsazureml URI。

后续步骤