אבחון בעיות ב-SQL Server

פתרון בעיות במקרה של שגיאות

יכול להיות שיתרחשו שגיאות במהלך זמן הריצה של תהליך העברת המשימות.

  • במקרה של חלק מהשגיאות, Database Migration Service מנסה אוטומטית לבצע שוב את הפעולות הפגומות כדי להמשיך את תהליך ההעברה ולמנוע שיבושים. סטטוס משימת ההעברה ישתנה לפועלת עם שגיאות. הסטטוס הזה מציין ש-Database Migration Service ממשיך להעביר נתונים שלא הושפעו מהשגיאות.
  • חלק מהשגיאות לא ניתנות לתיקון. כאשר Database Migration Service נתקל בשגיאה שלא ניתן לשחזר, סטטוס משימת ההעברה משתנה לנכשל. במקרים כאלה, צריך להפעיל מחדש את משימת ההעברה אחרי שהבעיה נפתרה.

כדי לפתור שגיאה, עוברים לעבודת ההעברה שהושפעה, מעיינים בשגיאה ופועלים לפי השלבים שמפורטים בהודעת השגיאה. אפשר גם לקבל פרטים נוספים על ידי עיון ביומנים של Cloud Monitoring לגבי מכונת היעד של Cloud SQL. משתמשים בקישור ל-Cloud Monitoring בדף הפרטים של משימת ההעברה.

בטבלה הבאה מפורטות כמה דוגמאות לבעיות ודרכים לפתור אותן:

לבעיה הזו... יכול להיות שהבעיה היא... אפשר לנסות את הפעולות הבאות…
הודעת שגיאה: The BAK file's database major version number {backup_version_num} must not be higher than the current database major version number {your Cloud SQL for SQL Server version number}. אתם מנסים לייבא קובצי גיבוי מגרסה מאוחרת יותר של SQL Server מהגרסה שבה אתם משתמשים במכונת היעד של Cloud SQL ל-SQL Server.

Database Migration Service תומך בהעברות בין גרסאות רק מגרסאות ישנות יותר לגרסאות חדשות יותר, אם אתם עומדים בהנחיות לתאימות בין גרסאות. אפשר לעיין ברשימה של מסדי הנתונים הנתמכים כמקורות ויעדים.

יוצרים מחדש את מכונת היעד של Cloud SQL ל-SQL Server כדי להשתמש בגרסה מאוחרת יותר של SQL Server, ומנסים שוב את תהליך ההעברה עם המכונה החדשה.
הודעת שגיאה: The following database already exists in destination: {database_name}. מכונת היעד של Cloud SQL כבר מכילה מסד נתונים עם אותו שם כמו אחד ממסדי הנתונים שכלולים במשימת ההעברה. מסירים את הבעיה שקשורה לשם. במאמר שגיאה: מסד הנתונים כבר קיים ביעד
הודעת שגיאה: Permission denied for {cloudsql.databases.get} on the Database Migration Service service account. לחשבון השירות של Database Migration Service חסרות הרשאות. מוסיפים את ההרשאות החסרות לחשבון השירות של Database Migration Service. מידע נוסף זמין במאמר בקרת גישה באמצעות IAM.
הודעת שגיאה: Missing WAL file at Log Sequence Number (LSN) {log_number_here} יכול להיות שקבצי יומן העסקאות משתמשים בחותמות זמן שגויות של תקופת ה-Epoch בנוגע לסדר העדכונים שהם מכילים. Database Migration Service משתמש במספרי רצף של יומנים ובחותמות זמן של תקופות כדי לשלוט בסדר שבו קובצי יומן העסקאות משוכפלים למופע היעד של Cloud SQL. בודקים ומשנים את חותמות הזמן של תקופת ה-Epoch שמופיעות בשמות הקבצים של קובצי יומן הטרנזקציות האחרונים. אפשר לעיין במאמר בנושא שינוי שמות שגויים של יומני טרנזקציות.
כשמעבירים מסדי נתונים נבחרים ועבודת ההעברה לא מצליחה לשכפל נתונים למסד נתונים אחד או יותר, הסטטוס נכשל מוצג ברשימת מסדי הנתונים. שגיאות שונות בעבודת ההעברה.

בעמודה שגיאות, לוחצים על הצגת שגיאות ומתקנים אותן. אחרי שתתקנו את השגיאות, תצטרכו ללחוץ על הפעלה מחדש.

שגיאה: מסד הנתונים כבר קיים ביעד

מופיעה הודעת השגיאה הבאה: The following database already exists in destination: {database_name}.

יכול להיות שהבעיה היא

מופע היעד של Cloud SQL כבר מכיל מסד נתונים עם אותו שם כמו אחד ממסדי הנתונים שכלולים במשימת ההעברה.

פעולות שכדאי לנסות

בהתאם לתרחיש ההעברה, יש דרכים שונות לפתור את הבעיה של מסדי נתונים כפולים. אפשר לנסות אחת מהפעולות הבאות:

משנים את השם של קטגוריית Cloud Storage של המקור כדי להעביר את מסד הנתונים עם שם אחר.

השם של מסד הנתונים ש-Database Migration Service יוצר במופע Cloud SQL של היעד נגזר משמות התיקיות ב-Cloud Storage שבהן מאוחסנים קובצי הגיבוי. אם יש לכם שני מסדי נתונים שונים עם אותו שם ואתם צריכים את שניהם ביעד Cloud SQL, אתם יכולים לשנות את השם של התיקיות וליצור מחדש את משימת ההעברה כדי למנוע את בעיית השמות.

כך עושים את זה:

  1. יוצרים תיקיות חדשות למסד הנתונים של המקור שמושפע מהתנגשות בשמות. אפשר לעיין במאמר בנושא אחסון קובצי גיבוי בקטגוריה של Cloud Storage .
  2. יוצרים מחדש את עבודת ההעברה. אפשר לעיין במאמר בנושא יצירת עבודת העברה.

    אפשר להוסיף מסדי נתונים חדשים למשימת העברה קיימת, אבל אי אפשר להסיר מסדי נתונים ממשימת העברה. לכן צריך ליצור מחדש את כל משימת ההעברה.

מחיקת מסד הנתונים הכפול מהמכונה של Cloud SQL ל-SQL Server.

אם מסד הנתונים במכונת היעד של Cloud SQL הוא כפיל, אפשר להסיר אותו מהמכונה ולהמשיך עם משימת ההעברה. אפשר לעיין במאמר מחיקת מסד נתונים במסמכי התיעוד של Cloud SQL ל-SQL Server.


שינוי שמות של קובצי יומן עסקאות כדי להתאים לקובצי WAL לא מסודרים

יכול להיות שהבעיה היא

יכול להיות שקבצי יומן העסקאות משתמשים בחותמות זמן שגויות של תקופת ה-Epoch בנוגע לסדר העדכונים שהם מכילים. Database Migration Service משתמש במספרי רצף של יומנים ובחותמות זמן של תקופות כדי לשלוט בסדר שבו קובצי יומן העסקאות משוכפלים למופע היעד של Cloud SQL.

פעולות שכדאי לנסות

יכול להיות שיהיו עיכובים בהעלאת הקבצים או שהם לא יעלו בסדר הנכון. מחכים כמה דקות כדי לאפשר לבעיה להיפתר, או בודקים אם יש קבצים חסרים בקטגוריה של Cloud Storage.

אם הבעיה לא נפתרה, צריך לאמת ולשנות את חותמות הזמן של תקופת ה-Epoch בשמות של קובצי יומן העסקאות.

כך עושים את זה:

  1. בודקים את רשימת פעולות הייבוא של יומן העסקאות במכונת היעד של Cloud SQL ל-SQL Server. נכנסים לדף Cloud SQL Instances במסוף Google Cloud .

    כניסה לדף Cloud SQL Instances

  2. לוחצים על הצגת כל הפעולות > הצגת יומני שגיאות של SQL Server.
  3. אפשר לראות את כל פעולות הייבוא של קובצי יומן הטרנזקציות ולוודא ששמות הקבצים שלהם מכילים חותמות זמן נכונות של תקופת ה-Epoch.
  4. אם שמתם לב ששמות של קובצי יומן עסקאות מהזמן האחרון כוללים חותמות זמן של תקופות לא עוקבות, צריך לעבור לקטגוריה של Cloud Storage ולשנות את שם הקובץ. Database Migration Service מזהה את השינוי באופן אוטומטי ומנסה לייבא את קובצי יומן הטרנזקציות הרלוונטיים.
  5. ‫Amazon RDS בלבד: יכול להיות שחלק מקובצי יומן העסקאות לא נכללו במהלך הייצוא לתהליך S3. כדאי לנסות להפעיל מחדש את פונקציית הייצוא של יומן העסקאות לתקופה שסביב קובצי ה-WAL החסרים.