תופעות
נניח שאתה משתמש בקבוצה ' זמינות AlwaysOn ' במסד נתונים של Microsoft SQL Server 2012 או SQL Server 2014, וקיימת טרנזקציה גדולה ופתוחה של פעילות ומחייבת שטח יומן נוסף. כאשר קובץ יומן הרישום אינו יכול לצמוח מאחת הסיבות הבאות, הטרנזקציה נכשלת.
-
חוסר שטח קבצים נוסף
-
תצורת קובץ יומן הרישום אינה לגדול
-
קובץ יומן הרישום הגיע לגודלו המרבי שתצורתו נקבעה
נוסף לכך, אתה מקבל את הודעת השגיאה הבאה:
שגיאה: 9002, חומרה: 17, State: 9. יומן הטרנזאקציות עבור מסד הנתונים ' <מסדהנתונים של > ' מלא עקב ' LOG_BACKUP '.
לאחר הפעלת גיבוי יומן, אתה מקבל הודעת שגיאה נוספת של 9002:
שגיאה: 9002, חומרה: 17, State: 9. יומן הטרנזאקציות עבור מסד הנתונים ' <מסדהנתונים של > ' מלא עקב ' ACTIVE_TRANSACTION '.
לאחר גיבוי יומן רישום אחר, תקבל הודעת שגיאה נוספת של 9002 ולאחר מכן הודעת שגיאה של 5901:
שגיאה: 9002, חומרה: 17, State: 9. יומן הטרנזאקציות עבור מסד הנתונים ' <מסדהנתונים של > ' מלא עקב ' AVAILABILITY_REPLICA '.
לא היתה אפשרות לכתוב רשומת ביקורת במסד נתונים של <שם מסדנתונים של > מכיוון שיומן הרישום אינו מקום. פנה אל מנהל מסד הנתונים כדי לחתוך את יומן הרישום או להקצות שטח נוסף לקבצי יומן הרישום של מסד הנתונים. שגיאה: 5901, חומרה: 16, State: 1. יחידת שחזור אחת או יותר השייכת למסד הנתונים ' <מסד הנתוניםשל > ' נכשלה ביצירת מחסום. בדרך כלל, פעולה זו נגרמת על-ידי חוסר משאבי מערכת כגון דיסק או זיכרון, או במקרים מסוימים עקב פגם במסד נתונים. בדוק ערכים קודמים ביומן השגיאות לקבלת מידע מפורט יותר על כשל זה.
לאחר מכן, בעת החזרה למצב הקודם של הטרנזקציה, ייתכן שתקבל את הודעת השגיאה הבאה:
Msg 3052, Level 16, State 1, Line 4BACKUP LOG לא היתה אפשרות לרשום עדכונים עבור מסד נתונים ' <מסד נתונים> '. הגיבויים העוקבים של יומן הרישום נדרשים לקדם את נקודת הגיבוי מתוך ' <LSN id 1> ' To ' <LSN id 2> ' לאחר ששטח הרישום זמין לרישום שלהם.
כאשר אתה מקבל הודעות אלה, אין עוד אפשרות לשלוח טרנזקציות חדשות למסד הנתונים, ולא ניתן להגדיל את קובץ יומן הרישום או להוסיף קובץ יומן רישום אחר.
פתרון
הבעיה נפתרה לראשונה בעדכון המצטבר הבא של SQL Server:
כל עדכון מצטבר חדש עבור SQL Server מכיל את כל התיקונים החמים ואת כל תיקוני האבטחה שנכללו בעדכון המצטבר הקודם. אנו ממליצים להוריד ולהתקין את העדכונים המצטברים האחרונים עבור SQL Server:
פתרון
באפשרותך להשתמש בפתרון הבא כדי לחתוך את הפעילות יומני רישום וקורות חיים.
-
בדוק כל עותק משוכפל משני כדי לאמת את last_hardened_lsn המשוכפל המשני (ראה sys.dm_hadr_database_replica_states) תואם לעותק המשוכפל הראשי last_hardened_lsn. באפשרותך לעשות זאת על-ידי הפעלת השאילתה הבאה המחוברת למופע העותק המשוכפל הראשי
SELECT ags.name as AGGroupName, ar.replica_server_name as InstanceName, hars.role_desc, db_name(drs.database_id)as DBName, drs.last_hardened_lsn, drs.log_send_queue_size, drs.synchronization_state_desc as SyncState, ar.availability_mode_desc as SyncMode, CASE drs.is_local WHEN 1 THEN drs.database_id ELSE NULL END as database_id FROM sys.dm_hadr_database_replica_states drs LEFT JOIN sys.availability_replicas ar ON drs.replica_id = ar.replica_id LEFT JOIN sys.availability_groups ags ON ar.group_id = ags.group_id LEFT JOIN sys.dm_hadr_availability_replica_states hars ON ar.group_id = hars.group_id and ar.replica_id = hars.replica_id WHERE db_name(drs.database_id) = '<database name>'
-
בעותק המשוכפל הראשי
-
הסר את מסד הנתונים מהקבוצה ' זמינות '.
-
הוסף מחדש את מסד הנתונים לקבוצה ' זמינות '.
-
-
בכל עותק משוכפל משני
-
הוסף מחדש את מסד הנתונים לקבוצה ' זמינות '.
-
על-ידי הסרת מסד הנתונים מהקבוצה ' זמינות ', היא תחתוך מיד את יומני הרישום שלו ותפנה את שטח היומן. אם הlast_hardened_lsn בכל עותק משוכפל משני זהה לעותק המשוכפל הראשי, ולאחר מכן לא מתבצעת גיבויים של יומן רישום במהלך הסרת מסד הנתונים מהקבוצה ' זמינות ' והוספת מחדש את מסד הנתונים בכל משני, העותק המשוכפל המשני התווסף בהצלחה מחדש ללא שגיאות או צורך בשחזור של גיבויים ביומן. אם עותק משוכפל משני אינו מופיע בעותק המשוכפל הראשי ועליך להסיר את מסד הנתונים מהקבוצה ' זמינות ' לפני שהמשני יכול להתעדכן, ייתכן שהעותק המשוכפל המשני חייב לשחזר את הגיבוי כדי לתפוס אותו לפני ההוספה מחדש לקבוצת הזמינות, או שחרור מסד הנתונים בעותק המשוכפל המשני ו
מצב
Microsoft אישרה שזוהי בעיה במוצרי Microsoft המופיעים בסעיף "חל על".