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

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

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

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

כדי לפתור שגיאה, עוברים למשימת ההעברה שבה קרתה השגיאה, בודקים את השגיאה ופועלים לפי השלבים שמפורטים בהודעת השגיאה. אפשר גם לקבל פרטים נוספים ביומני 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 משתמש במספרים סידוריים של יומנים ובחותמות זמן של ראשית זמן יוניקס (Unix epoch) כדי לשלוט בסדר שבו קובצי יומן העסקאות משוכפלים למכונה של Cloud SQL ביעד. בודקים ומתאימים את חותמות הזמן של התקופה שבהן נעשה שימוש בשמות הקבצים של קובצי יומן הטרנזקציות האחרונים. תיקון שמות שגויים של יומני טרנזקציות
כשמעבירים מסדי נתונים נבחרים ומשימת ההעברה לא מצליחה לשכפל נתונים למסד נתונים אחד או יותר, הסטטוס Failed מופיע ברשימת מסדי הנתונים. שגיאות שונות במשימת ההעברה.

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

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

מופיעה הודעת השגיאה הבאה: 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 שלא לפי הסדר

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

יכול להיות שקובצי יומן העסקאות משתמשים בחותמות זמן שגויות של תקופה ביחס לסדר העדכונים שהם מכילים. ‫Database Migration Service משתמש במספרים סידוריים של יומנים ובחותמות זמן של ראשית זמן יוניקס (Unix epoch) כדי לשלוט בסדר שבו קובצי יומן העסקאות משוכפלים למכונה של Cloud SQL ביעד.

דברים שכדאי לנסות

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

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

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

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

    כניסה לדף Cloud SQL Instances

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