排解移轉設定問題
本文旨在協助您排解設定 BigQuery 資料移轉服務移轉作業時最常發生的問題。但不會列出所有可能出現的錯誤訊息或問題。
如果您遇到本文未說明的問題,可以要求支援。
與 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 號碼
聯絡客戶服務前,請先從執行記錄或 Logs Explorer 擷取相關資訊,包括任何錯誤訊息。
如果您使用以事件為依據的移轉作業,以事件為依據的移轉設定可能無法觸發移轉作業。您可以在執行記錄頁面或設定頁面頂端查看錯誤訊息。
一般問題
診斷一般移轉問題時,請確認下列事項:
- 針對移轉類型適用的說明文件頁面,確認是否已完成其中「事前準備」一節所述的所有步驟。
- 移轉設定屬性是否正確。
- 建立移轉作業所使用的使用者帳戶是否擁有基礎資源的存取權。
如果移轉設定正確,且取得適當權限,請參閱下列常見問題的解決方案。
- 發生錯誤:
An unexpected issue was encountered. If this issue persists, please contact customer support. - 解決方法:這個錯誤通常表示 BigQuery 暫時中斷服務或發生問題。請等待約 2 小時以解決問題。如果問題仍未解決,請要求支援。
- 發生錯誤:
INTERNAL: An internal error occurred and the request could not be completed. This is usually caused by a transient issue... - 解決方法:這類錯誤通常表示發生暫時性內部問題。如果發生這個錯誤,您可以等待下一次排定的執行作業,看看問題是否解決,也可以手動觸發受影響日期的補充作業。如果問題仍未解決,請要求支援。
- 發生錯誤:
Quota Exceeded. 解決方法:移轉作業必須符合 BigQuery 的載入工作配額規定。如要提高配額,請與 Cloud de Confiance by S3NS 業務代表聯絡。詳情請參閱「配額與限制」。
如果您將 Cloud Billing 匯出資料載入至 BigQuery,可能會遇到
Quota Exceeded錯誤。Cloud Billing 匯出資料表和 BigQuery 資料移轉服務建立的目的地 BigQuery 資料表都會經過分割。設定這類 BigQuery 資料移轉服務工作時,如果選擇「覆寫」選項,系統會根據匯出的資料量,顯示配額錯誤。如要瞭解如何排解配額問題,請參閱「解決配額與限制錯誤」。如果錯誤是因 Cloud Billing 匯出作業的 BigQuery 資料移轉服務工作所致,請注意,由於個別 Cloud Billing 匯出資料表已分割,BigQuery 資料移轉服務建立的目標資料表也會分割,因此設定這類資料移轉工作時選擇「覆寫」選項,會導致 (DML) 配額錯誤,具體情況取決於帳單帳戶的建立時間。如要瞭解如何排解配額問題,請參閱「排解配額和限制錯誤」。
- 發生錯誤:
The caller does not have permission. 解決方法:確認 Cloud de Confiance 控制台中登入的帳戶,與您建立轉移作業時為 BigQuery 資料移轉服務 選取的帳戶相同。
登入 Cloud de Confiance 控制台的帳戶:
選擇帳戶,繼續使用 BigQuery 資料移轉服務:
- 發生錯誤:
Access Denied: ... Permission bigquery.tables.get denied on table ... 解決方法:確認 BigQuery 資料移轉服務服務代理程式已取得目標資料集的
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 資料移轉服務可能需要幾天時間,才能完全移除與移轉相關聯的所有資源,因此無法刪除網路附件。如要解決這項錯誤,請等待幾天,再嘗試刪除網路附件。如要提早刪除網路附件,請與支援團隊聯絡。
- 發生錯誤:
Error while reading data, error message: CSV processing encountered too many errors, giving up. 解決方法:如果資料來源中的 CSV 檔案設定與轉移設定中的 CSV 檔案設定不符,就可能發生這個錯誤。舉例來說,如果「要略過的標題列」設為
0,但來源 CSV 檔案包含 1 個以上的標題列,就可能發生這個錯誤。如要修正這項錯誤,請確認轉移設定中的 CSV 設定正確無誤,且與來源 CSV 檔案的設定相符。- 發生錯誤:
Error 400: DTS service agent needs iam.serviceAccounts.getAccessToken permission or [SERVICE_ACCOUNT] doesn't exist. 根本原因:這項錯誤表示 BigQuery 資料移轉服務 (DTS) 服務代理缺少必要權限,無法模擬用於移轉作業的服務帳戶。這通常發生在跨專案授權情境,或是使用 Terraform 等基礎架構即程式碼 (IaC) 工具設定移轉時。
解決方法:將服務帳戶權杖建立者角色 (
roles/iam.serviceAccountTokenCreator) 授予 DTS 服務代理,讓該代理模擬特定服務帳戶。gcloud iam service-accounts add-iam-policy-binding service_account \ --member serviceAccount:service-destination_project_number@gcp-sa-bigquerydatatransfer.s3ns-system.iam.gserviceaccount.com \ --role roles/iam.serviceAccountTokenCreator
其中:
- service_account 是用來授權轉移作業的帳戶電子郵件地址。
- destination_project_number 是移轉設定所在的專案編號。如要瞭解如何找出專案編號,請參閱「找出專案名稱、編號和 ID」。
- 發生錯誤:
For asset "ASSET", no eligible column found for splitting (Reason: Primary or Indexed Key columns found, but none are of supported types (INTEGER, TINYINT, SMALLINT, FLOAT, REAL, DOUBLE, NUMERIC, BIGINT, DECIMAL, DATE, BOOLEAN)) - 解決方法:嘗試將超過 2,000,000 筆記錄從來源資料表移轉至 BigQuery 資料表時,如果來源資料表沒有主鍵或支援資料類型的索引資料欄,就可能發生這個錯誤。如要解決這個問題,請在來源資料表中,將支援的資料類型設為其中一個資料欄的主鍵或索引資料欄。詳情請參閱移轉來源指南的限制一節。
- 發生錯誤:
Permission bigquery.tables.create denied. 症狀:
Error code 7 : Access Denied : Dataset [PROJECT_ID]:[DATASET_ID] : Permission bigquery.tables.create denied on dataset [PROJECT_ID]:[DATASET_ID] (or it may not exist).即使目的地資料表已存在,且服務帳戶具備標準資料編輯者角色,Cloud Storage 移轉作業仍會因資料表建立作業遭拒存取而失敗。
原因:如果 Cloud Storage 轉移作業包含超過 10,000 個檔案,且未授予
bigquery.tables.create權限,就會發生這個錯誤。如果移轉的檔案超過 10,000 個,服務會將資料分片到動態建立的暫時暫存資料表。即使專案已註冊大量移轉功能 (或配額增加要求已獲准),仍須具備 bigquery.tables.create 權限。解決方法:如要順利轉移超過 10,000 個檔案,請確認你符合下列兩項條件:
確認配額和功能註冊:確認專案已註冊大量 Cloud Storage 轉移 (超過 10,000 個檔案)。如要轉移超過 10,000 個檔案,請與支援團隊聯絡,要求增加每次轉移作業的檔案數量上限。
授予必要 IAM 權限:將目的地資料集上的
bigquery.tables.create權限,授予執行轉移作業的服務帳戶或使用者身分。這項權限包含在 BigQuery 資料編輯者 (roles/bigquery.dataEditor) 和 BigQuery 管理員 (roles/bigquery.admin) 角色中。如果授予必要權限後仍持續發生失敗情況,請與支援團隊聯絡,確認允許清單狀態。替代做法:如果無法授予必要權限或提高配額,您必須將每次轉移作業的檔案數量減少至 10,000 個以下,例如使用更具體的 URI 萬用字元,或將轉移作業分成多個較小的設定。
授權和權限問題
以下是從不同資料來源轉移資料時,可能會遇到的一些常見權限錯誤:
- 發生錯誤:
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 & Admin」(IAM 與管理) 頁面。
選取「包含 S3NS提供的角色授予項目」核取方塊。
確認系統顯示名稱為
service-<project_number>@gcp-sa-bigquerydatatransfer.s3ns-system.iam.gserviceaccount.com的服務帳戶,或該帳戶已獲授與 BigQuery 資料移轉服務代理程式角色。
如果未顯示服務帳戶,或服務帳戶未獲授與 BigQuery 資料移轉服務代理人角色,請在 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 資料編輯者」角色。
確認 BigQuery 資料移轉服務服務代理人已新增至這個角色。如果沒有,請將 BigQuery 資料編輯者 (
roles/bigquery.dataEditor) 角色授予 BigQuery 資料移轉服務服務代理人。
- 發生錯誤:
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 & Admin」(IAM 與管理) >「Service Accounts」(服務帳戶)。這個檢視畫面會顯示目前專案的所有服務帳戶。
- 在服務帳戶所在的專案中,使用下列指令停用政策。如要停用這項政策,使用者必須是機構政策管理員。只有機構管理員可以授予使用者這個角色。
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 資料移轉服務服務代理已獲授
pubsub.subscriber角色:前往 Cloud de Confiance 控制台的「Pub/Sub」頁面。
選取您在以事件為依據的移轉作業中使用的 Pub/Sub 訂閱項目。
如果資訊面板已隱藏,請按一下右上角的「顯示資訊面板」。
在「權限」分頁中,確認 BigQuery 資料移轉服務服務代理程式具有
pubsub.subscriber角色。

如果服務代理未獲授
pubsub.subscriber角色,按一下「新增主體」,將pubsub.subscriber角色授予service-PROJECT_NUMBER@gcp-sa-bigquerydatatransfer.s3ns-system.iam.gserviceaccount.com- 發生錯誤:
Cloud Pub/Sub API has not been used in project PROJECT_NUMBER before or it is disabled. 解決方法:確認專案已啟用 Cloud Pub/Sub API:
在 Cloud de Confiance 控制台中,前往「APIs & Services」(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 資料移轉服務服務代理已獲授
serviceusage.serviceUsageConsumer角色:前往 Cloud de Confiance 控制台的「IAM & Admin」(IAM 與管理) 頁面。
選取「包含 S3NS提供的角色授予項目」核取方塊。
確認系統顯示名稱為
service-<project_number>@gcp-sa-bigquerydatatransfer.s3ns-system.iam.gserviceaccount.com的服務帳戶,且該帳戶已獲授服務用量消費者角色。
- 問題:使用 Cloud Storage 事件驅動的移轉作業時,在 Cloud Storage bucket 中上傳或更新檔案後,系統不會觸發任何移轉作業。
收到事件後,系統不會立即觸發轉移作業。觸發轉移作業可能需要幾分鐘。如要查看下次轉移作業的狀態,請查看執行記錄中的「下次執行目標日期」欄位。這個欄位會顯示下次執行的排定時間,如果沒有收到任何事件,則會顯示「正在等待事件,以便排定下一項執行作業」。如果您已在 Cloud Storage bucket 中上傳或更新檔案,但「下次執行的目標日期」未更新,且系統在 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. - 解決方法:確認專案中排定的轉移作業數量未超出上限。如需計算移轉作業啟動的載入工作數相關資訊,請參閱「配額與限制」。