排查转移作业配置问题
本文档旨在帮助您排查在设置 BigQuery Data Transfer Service 转移作业时遇到的最常见问题。本文档并未包含所有可能的错误消息或问题。
如果您遇到本文档未涉及的问题,可请求支持。
在联系 Cloud Customer Care 之前,请记录转移作业配置和转移作业运行详情。如需了解如何获取这些详情,请参阅获取转移作业详情以及查看转移作业运行详情和日志消息。
检查错误
如果首次转移作业运行失败,您可以检查运行历史记录中的详细信息。运行历史记录中列出的错误可帮助您使用本文档确定适当的解决方法。
您还可以使用 Logs Explorer 来查看特定转移作业的错误消息。以下 Logs Explorer 过滤条件会返回有关特定转移配置作业的信息,以及所有错误消息:
resource.type="bigquery_dts_config"
labels.run_id="RUN_ID"
resource.labels.config_id="CONFIG_ID"
替换以下内容:
RUN_ID:特定作业运行的 ID 编号CONFIG_ID:转移作业配置作业的 ID 编号
在联系 Customer Care 之前,请从运行历史记录或 Logs Explorer 中捕获所有相关信息,包括所有错误消息。
如果您使用事件驱动型转移作业,事件驱动型转移作业配置可能无法触发转移作业运行。您可以在运行历史记录页面或配置页面的顶部查看错误消息。
常见问题
诊断常规转移问题时,请验证以下内容:
- 确认已完成您的转移类型对应文档页面的“准备工作”部分中的所有步骤。
- 转移配置属性准确无误。
- 用于创建转移作业的用户账号可访问底层资源。
如果您的转移作业配置准确无误,并且您已授予相应的权限,请参阅以下内容来获取常见问题的解决方案。
- 错误:
An unexpected issue was encountered. If this issue persists, please contact customer support. - 解决方法:此错误通常表示 BigQuery 中出现临时中断或问题。请等待大约 2 个小时,等到问题解决。如果问题仍然存在,您可以请求支持。
- 错误:
Quota Exceeded. 解决方法:转移作业受 BigQuery 加载作业配额的约束。如需增加配额,请与您的 Cloud de Confiance by S3NS 销售代表联系。如需了解详情,请参阅配额和限制。
如果要加载 Cloud Billing 导出到 BigQuery 的数据,您可能会遇到
Quota Exceeded错误。Cloud Billing 导出表和由 BigQuery Data Transfer Service 服务创建的目标 BigQuery 表均已分区。在设置此类 BigQuery Data Transfer Service 作业时选择覆盖选项会导致配额错误,具体取决于导出的数据量。如需了解如何排查配额问题,请参阅排查配额和限制错误。如果错误是用于 Cloud Billing 导出的 BigQuery Data Transfer Service 作业引起的,请注意,由于各个 Cloud Billing 导出表已分区,因此 BigQuery Data Transfer Service 创建的目标表也已分区,因而在设置此类数据转移作业时选择覆盖选项会导致 (DML) 配额错误,具体取决于结算账号的存在时间。如需了解如何排查配额问题,请参阅排查配额和限制错误。
- 错误:
The caller does not have permission. 解决方法:确认 Cloud de Confiance 控制台中的已登录账号与您在创建转移作业时为 BigQuery Data Transfer Service 选择的账号相同。
Cloud de Confiance 控制台中的已登录账号:
请选择一个账号以继续使用 BigQuery Data Transfer Service:
- 错误:
Access Denied: ... Permission bigquery.tables.get denied on table ... 解决方案:确认 BigQuery Data Transfer Service 服务代理拥有目标数据集上的
bigquery.dataEditor角色。在创建和更新转移作业时,系统会自动应用此授权,但之后访问权限政策可能会被手动修改。如需重新授予权限,请参阅授予对数据集的访问权限。- 错误:
region violates constraint constraints/gcp.resourceLocations on the resource projects/project_id 解决方法:当用户尝试在位置限制组织政策中指定的受限位置创建转移配置时,会发生此错误。如需解决此问题,您可以更改组织政策以允许该区域,或者将转移配置更改为位于组织政策不限制的区域中的目标数据集。
- 错误:
Please look into the errors[] collection for more details. 解决方法:数据转移失败时可能会发生此错误。如需详细了解数据转移失败的原因,您可以使用 Cloud Logging 查看日志。您可以使用转移
run_id进行搜索,来查找特定运行的日志。- 错误:
Network Attachment with connected endpoints cannot be deleted. 解决方法:如果用户在删除转移作业后不久尝试删除网络连接,则可能会发生此错误。这是因为,在删除转移作业后,BigQuery Data Transfer Service 可能需要几天时间才能完全移除与该转移作业关联的所有资源,这可能会阻止网络连接被删除。如需解决此错误,请等待几天,然后再尝试删除网络连接。如果您想尽快删除网络连接,可以与支持团队联系。
授权和权限问题
以下是从不同数据源转移数据时可能会遇到的一些常见权限错误:
- 错误:
BigQuery Data Transfer Service is not enabled for <project_id> - 错误:
BigQuery Data Transfer Service has not been used in project <project_id> before or it is disabled ... 解决方法:请按照以下步骤验证是否已授予服务代理角色:
在 Cloud de Confiance 控制台中,前往 IAM 和管理页面。
选中包括 S3NS提供的角色授权复选框。
验证是否显示了名称为
service-<project_number>@gcp-sa-bigquerydatatransfer.s3ns-system.iam.gserviceaccount.com的服务账号,或者该服务账号是否已被授予 BigQuery Data Transfer Service BigQuery Data Transfer Service Agent 角色。
如果系统未显示该服务账号,或者该服务账号未被授予 BigQuery Data Transfer Service 服务代理角色,请在 Cloud de Confiance 控制台中或通过运行以下 Google Cloud CLI 命令授予预定义角色:
gcloud projects add-iam-policy-binding PROJECT_NUMBER \ --member serviceAccount:service-PROJECT_NUMBER@gcp-sa-bigquerydatatransfer.s3ns-system.iam.gserviceaccount.com \ --role roles/bigquerydatatransfer.serviceAgent将
PROJECT_NUMBER替换为与此服务账号关联的项目编号。- 错误:
There was an error loading this table. Check that the table exists and that you have the correct permissions. 解决方法:
在 Cloud de Confiance 控制台中,前往 BigQuery 页面。
点击转移作业中使用的目标数据集。
点击共享菜单,然后点击权限。
展开 BigQuery Data Editor 角色。
验证是否已将 BigQuery Data Transfer Service 服务代理添加到此角色。如果没有,请向 BigQuery Data Transfer Service 服务代理授予 BigQuery Data Editor (
roles/bigquery.dataEditor) 角色。
- 错误:
A permission denied error was encountered: PERMISSION_DENIED. Please ensure that the user account setting up the transfer config has the necessary permissions, and that the configuration settings are correct 解决方法:
在 Cloud de Confiance 控制台中,前往数据传输页面。
点击失败的转移作业,然后选择配置标签页。
验证用户字段中列出的转移所有者是否具有数据源需要的所有权限。
如果转移所有者没有需要的所有权限,请通过更新其凭据来授予所需权限。您还可以将转移作业所有者更改为其他具备所需权限的用户。
- 错误:
Authentication failure: User Id not found. Error code: INVALID_USERID 解决方法:转移作业所有者的用户 ID 无效。通过更新其凭据将转移所有者更改为其他用户。 如果您使用的是服务账号,您还应验证运行数据转移作业的账号是否拥有使用服务账号所需的所有权限。
- 错误:
The user does not have permission 解决方法:验证转移所有者是否为服务账号,以及该服务是否设置了所有需要的权限。另一种可能是,在其下创建所用服务账号的项目与用于创建此转移作业的项目不同。如需解决跨项目权限问题,请参阅以下资源:
- 允许跨项目关联服务账号
- 跨项目服务账号授权(用于授予所需权限)
- 错误:
HttpError 403 when requesting returned "The caller does not have permission" googleapiclient.errors.HttpError: <HttpError 403 when requesting returned "The caller does not have permission". Details: "The caller does not have permission">当您尝试使用服务账号设置预定查询时,可能会出现此错误。
解决方法:确保服务账号具有计划或修改预定查询所需的所有权限,并确保设置预定查询的用户具有访问服务账号的权限。
如果已分配正确的权限,但您仍然遇到错误,请检查系统是否默认对项目强制执行了停用跨项目服务账号使用情况政策。您可以在 Cloud de Confiance 控制台中检查该政策,方法是前往 IAM 和管理 > 组织政策,然后搜索该政策。

如果强制执行停用跨项目服务账号使用情况政策,则可以通过执行以下操作来停用该政策:
- 在 Cloud de Confiance 控制台中,前往 IAM 和管理 > 服务账号,确定与项目关联的服务账号。此视图会显示当前项目的所有服务账号。
- 使用以下命令在服务账号所在的项目中停用该政策。如需停用此政策,用户必须是 Organization Policy Administrator。只有 Organization Administrator 可以向用户授予此角色。
gcloud resource-manager org-policies disable-enforce iam.disableCrossProjectServiceAccountUsage --project=[PROJECT-ID]
事件驱动型转移作业配置问题
下面是创建事件驱动型转移作业时可能会遇到的常见问题。
- 错误:
Data Transfer Service is not authorized to pull message from the provided Pub/Sub subscription. 解决方法:验证 BigQuery Data Transfer Service 服务代理已被授予
pubsub.subscriber角色:在 Cloud de Confiance 控制台中,前往 Pub/Sub 页面。
选择您在事件驱动型转移作业中使用的 Pub/Sub 订阅。
如果信息面板处于隐藏状态,请点击右上角的显示信息面板。
在权限标签页中,验证 BigQuery Data Transfer Service 服务代理具有
pubsub.subscriber角色

如果服务代理未被授予
pubsub.subscriber角色。点击 添加主账号,向service-PROJECT_NUMBER@gcp-sa-bigquerydatatransfer.s3ns-system.iam.gserviceaccount.com授予pubsub.subscriber角色- 错误:
Cloud Pub/Sub API has not been used in project PROJECT_NUMBER before or it is disabled. 解决方法:验证项目已启用 Cloud Pub/Sub API:
在 Cloud de Confiance 控制台中,前往 API 和服务页面。
点击启用 API 和服务。
搜索
Cloud Pub/Sub API,选择第一个结果,然后点击启用。
- 错误:
Data Transfer Service does not have required permission to use project quota of project PROJECT_NUMBER to access Pub/Sub. 解决方法:验证 BigQuery Data Transfer Service 服务代理已被授予
serviceusage.serviceUsageConsumer角色:在 Cloud de Confiance 控制台中,前往 IAM 和管理页面。
选中包括 S3NS提供的角色授权复选框。
验证显示了名称为
service-<project_number>@gcp-sa-bigquerydatatransfer.s3ns-system.iam.gserviceaccount.com的服务账号,并且该服务账号已被授予 Service Usage Consumer 角色。
- 问题:使用 Cloud Storage 事件驱动型转移作业时,在 Cloud Storage 存储桶中上传或更新文件后,不会触发转移作业运行。
转移作业运行不会在收到事件后立即触发,可能在几分钟后才会触发。如需了解下一次转移作业运行的状态,您可以查看运行历史记录中的下一次运行的目标日期字段。此字段会显示下一次运行的时间,如果未收到任何事件,则会显示“正在等待事件发生,以安排下次运行”。如果您已在 Cloud Storage 存储桶中上传或更新文件,但下一次运行的目标日期未更新,并且在 10-20 分钟内未触发任何运行,请参阅以下解决方法。
解决方法:验证转移作业配置中指定的 Pub/Sub 订阅能够获取从 Cloud Storage 事件发布的消息:
在 Cloud de Confiance 控制台中,前往 Pub/Sub 页面。
选择您在事件驱动型转移作业中使用的 Pub/Sub 订阅。
在指标标签页中,查看“最早的未确认消息的存在时间”图表,看看是否有任何消息。

如果未发布任何消息,请检查是否已为 Cloud Storage 正确配置 Pub/Sub 通知。您可以使用以下 Google Cloud CLI 命令来检查与存储桶关联的通知配置:
gcloud storage buckets notifications list gs://BUCKET_NAME将
BUCKET_NAME替换为您用于通知的存储桶的名称。如需了解如何为 Cloud Storage 配置 Pub/Sub 通知,请参阅配置适用于 Cloud Storage 的 Pub/Sub 通知。如果有消息,请检查其他事件驱动型转移作业配置是否使用了相同的 Pub/Sub 订阅。同一个 Pub/Sub 订阅不能被多个事件驱动型转移作业配置重复使用。如需详细了解事件驱动型转移,请参阅事件驱动型转移。
配额问题
- 错误:
Quota exceeded: Your project exceeded quota for imports per project. - 解决方法:确认您未在项目中安排过多的转移作业。如需了解如何计算转移作业启动的加载作业数量,请参阅配额和限制。