פתרון בעיות בהגדרות ההעברה
המסמך הזה נועד לעזור לכם לפתור את הבעיות הנפוצות ביותר שמתרחשות כשמגדירים העברה באמצעות שירות העברת נתונים ל-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: מספר המזהה של הפעלת משימה ספציפית-
CONFIG_ID: מספר המזהה של עבודת הגדרת העברה
לפני שפונים לתמיכת הלקוחות, כדאי לתעד את כל המידע הרלוונטי מהיסטוריית ההרצה או מכלי Logs Explorer, כולל הודעות שגיאה.
אם אתם משתמשים בהעברות מבוססות-אירועים, יכול להיות שההגדרה של העברה מבוססת-אירועים לא תפעיל את ההרצה של ההעברה. הודעות השגיאה מופיעות בחלק העליון של הדף run history או בדף configuration.
בעיות כלליות
כדי לאבחן בעיות כלליות בהעברה, צריך לבדוק את הדברים הבאים:
- מוודאים שביצעתם את כל השלבים בקטע 'לפני שמתחילים' בדף התיעוד של סוג ההעברה שלכם.
- המאפיינים של הגדרות ההעברה נכונים.
- לחשבון המשתמש שמשמש ליצירת ההעברה יש גישה למשאבים הבסיסיים.
אם הגדרת ההעברה נכונה וההרשאות המתאימות ניתנו, כדאי לעיין בפתרונות הבאים לבעיות נפוצות.
- שגיאה:
An unexpected issue was encountered. If this issue persists, please contact customer support. - פתרון: בדרך כלל השגיאה הזו מציינת שיש הפסקה זמנית בשירות או בעיה ב-BigQuery. מחכים כשעתיים עד שהבעיה תיפתר. אם הבעיה נמשכת, אפשר לפנות לתמיכה.
- שגיאה:
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 ל-BigQuery, יכול להיות שתיתקלו בשגיאה
Quota Exceeded. גם הטבלאות של נתוני החיוב ב-Cloud וגם טבלאות היעד ב-BigQuery שנוצרות על ידי שירות העברת הנתונים ל-BigQuery מחולקות למחיצות. אם בוחרים באפשרות overwrite (החלפה) כשמגדירים משימות כאלה של שירות העברת נתונים ל-BigQuery, יכולות להופיע שגיאות שקשורות למכסת השימוש, בהתאם לכמות הנתונים שמיוצאת. למידע על פתרון בעיות שקשורות למכסות, אפשר לעיין במאמר פתרון בעיות שקשורות למכסות ולמגבלות.אם השגיאה נובעת מעבודות של שירות העברת נתונים ל-BigQuery לייצוא נתוני חיוב ב-Cloud, חשוב לדעת שטבלאות הייצוא של חיוב ב-Cloud מחולקות למחיצות, ולכן גם טבלת היעד שנוצרת על ידי שירות העברת נתונים ל-BigQuery מחולקת למחיצות. לכן, בחירה באפשרות overwrite (החלפה) במהלך הגדרת עבודות העברת נתונים כאלה תגרום לשגיאות של מכסת (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 של המקור מכיל שורת כותרת אחת או יותר. כדי לפתור את השגיאה הזו, צריך לוודא שהגדרות ה-CSV בהגדרות ההעברה נכונות ושהן תואמות להגדרות של קובץ ה-CSV של המקור.- שגיאה:
Error 400: DTS service agent needs iam.serviceAccounts.getAccessToken permission or [SERVICE_ACCOUNT] doesn't exist. הגורם הבסיסי: השגיאה הזו מציינת לסוכן השירות של שירות העברת הנתונים ל-BigQuery (DTS) אין את ההרשאה הנדרשת להתחזות לחשבון השירות שמשמש להעברה. זה קורה בדרך כלל בתרחישי הרשאה בין פרויקטים או כשההעברה מוגדרת באמצעות כלים של תשתית כקוד (IaC) כמו Terraform.
פתרון: צריך להקצות לסוכן השירות של DTS את התפקיד 'יצירת אסימונים בחשבון שירות' (
roles/iam.serviceAccountTokenCreator) בחשבון השירות הספציפי שאליו הוא צריך להתחזות.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 הוא מספר הפרויקט שבו נמצאת הגדרת ההעברה. כאן מוסבר איך למצוא את מספר הפרויקט.
- שגיאה:
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 Data Editor (roles/bigquery.dataEditor) ו-BigQuery Admin (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.
מסמנים את תיבת הסימון Include S3NS-provided role grants.
מוודאים שחשבון השירות עם השם
service-<project_number>@gcp-sa-bigquerydatatransfer.s3ns-system.iam.gserviceaccount.comמוצג או שניתנה לו הרשאת סוכן של שירות העברת נתונים ל-BigQuery.
אם חשבון השירות לא מוצג, או שלא הוקצה לו תפקיד סוכן שירות של שירות העברת הנתונים ל-BigQuery, צריך להקצות את התפקיד המוגדר מראש ב Cloud de Confiance מסוף Cloud de Confiance או על ידי הפעלת הפקודה הבאה ב-CLI של Google Cloud:
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 נוסף לתפקיד הזה. אם לא, צריך להעניק את התפקיד BigQuery Data Editor (
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 פתרון:
נכנסים לדף Data Transfers במסוף Cloud de Confiance .
לוחצים על ההעברה שנכשלה ואז על הכרטיסייה הגדרות.
מוודאים שלבעלי ההעברה שמופיעים בשדה משתמש יש את כל ההרשאות הנדרשות למקור הנתונים.
אם לבעלים של ההעברה אין את כל ההרשאות הנדרשות, צריך לעדכן את פרטי הכניסה שלו כדי להעניק לו את ההרשאות הנדרשות. אפשר גם לשנות את הבעלים של ההעברה למשתמש אחר עם ההרשאות הנדרשות.
- שגיאה:
Authentication failure: User Id not found. Error code: INVALID_USERID פתרון: לבעלים של ההעברה יש מזהה משתמש לא תקין. כדי לשנות את הבעלים של ההעברה למשתמש אחר, צריך לעדכן את פרטי הכניסה שלו. אם אתם משתמשים בחשבון שירות, אתם צריכים גם לוודא שלחשבונות שמריצים את העברת הנתונים יש את כל ההרשאות הנדרשות לשימוש בחשבון שירות.
- שגיאה:
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 & Admin > Organization Policies ומחפשים את המדיניות.

אם המדיניות השבתת השימוש בחשבון שירות בפרויקטים שונים נאכפת, אפשר להשבית את המדיניות כך:
- כדי לזהות את חשבונות השירות שמשויכים לפרויקט באמצעות המסוף, עוברים אל IAM & Admin > Service Accounts. Cloud de Confiance בתצוגה הזו מופיעים כל חשבונות השירות של הפרויקט הנוכחי.
- משביתים את המדיניות בפרויקט שבו נמצאים חשבונות השירות באמצעות הפקודה הבאה. כדי להשבית את המדיניות הזו, המשתמש צריך להיות אדמין של מדיניות הארגון. רק אדמין הארגון יכול להעניק למשתמש את התפקיד הזה.
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:נכנסים לדף Pub/Sub במסוף Cloud de Confiance .
בוחרים את מינוי Pub/Sub שבו השתמשתם בהעברה מבוססת-אירועים.
אם חלונית המידע מוסתרת, לוחצים על Show info panel בפינה השמאלית העליונה.
בכרטיסייה הרשאות, מוודאים שלסוכן השירות של שירות העברת הנתונים ל-BigQuery הוקצה התפקיד
pubsub.subscriber.

אם לסוכן השירות לא הוקצה התפקיד
pubsub.subscriber. לוחצים על Add principal כדי לתת את התפקיד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.
לוחצים על Enable APIs and services.
מחפשים את
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.
מסמנים את תיבת הסימון Include S3NS-provided role grants.
מוודאים שחשבון השירות עם השם
service-<project_number>@gcp-sa-bigquerydatatransfer.s3ns-system.iam.gserviceaccount.comמוצג ושהוקצה לו התפקיד Service Usage Consumer.
- בעיה: כשמשתמשים בהעברה מבוססת-אירוע ב-Cloud Storage, לא מופעלת העברה אחרי העלאה או עדכון של קבצים בקטגוריה של Cloud Storage.
הפעלת ההעברה לא מתבצעת מיד אחרי קבלת אירוע. יכול להיות שיחלפו כמה דקות עד שהעברת הנתונים תתחיל. כדי לבדוק את הסטטוס של ההרצה הבאה של ההעברה, אפשר לעיין בשדה Target date for next run בrun history. בשדה הזה מוצג זמן התזמון של ההרצה הבאה, או שמוצגת ההודעה waiting for events to schedule next run (המתנה לאירועים כדי לתזמן את ההרצה הבאה) אם לא התקבלו אירועים. אם העליתם או עדכנתם קבצים בקטגוריה של Cloud Storage, אבל תאריך היעד להפעלה הבאה לא עודכן ולא מופעלות הרצות במשך 10-20 דקות, כדאי לנסות את הפתרון הבא.
פתרון: מוודאים שהמינוי ל-Pub/Sub שצוין בהגדרות ההעברה יכול לקבל הודעות שפורסמו מאירועים ב-Cloud Storage:
נכנסים לדף Pub/Sub במסוף Cloud de Confiance .
בוחרים את מינוי Pub/Sub שבו השתמשתם בהעברה מבוססת-אירועים.
בכרטיסייה Metrics (מדדים), בודקים את התרשים 'Oldest unacked message age' (הגיל של ההודעה הכי ישנה שלא אושרה) ורואים אם יש הודעות.

אם לא מתפרסמות הודעות, צריך לבדוק אם התראת Pub/Sub מוגדרת בצורה נכונה ל-Cloud Storage. אפשר להשתמש בפקודה הבאה של Google Cloud CLI כדי לבדוק את הגדרות ההתראות שמשויכות לקטגוריה:
gcloud storage buckets notifications list gs://BUCKET_NAMEמחליפים את
BUCKET_NAMEבשם הקטגוריה שבה משתמשים להתראות. מידע על הגדרת התראת Pub/Sub ל-Cloud Storage זמין במאמר הגדרת התראת Pub/Sub ל-Cloud Storage.אם יש הודעות, בודקים אם אותו מינוי Pub/Sub נמצא בשימוש בהגדרות אחרות של העברה מבוססת-אירועים. אי אפשר להשתמש שוב באותו מינוי Pub/Sub בכמה הגדרות של העברה מבוססת-אירועים. מידע נוסף על העברות מבוססות-אירועים זמין במאמר העברות מבוססות-אירועים.
בעיות שקשורות למכסות
- שגיאה:
Quota exceeded: Your project exceeded quota for imports per project. - פתרון: מוודאים שלא תזמנתם יותר מדי העברות בפרויקט. מידע על חישוב מספר העבודות של טעינת נתונים שהופעלו על ידי העברה זמין במאמר מכסות ומגבלות.