קובץ בסיס הנתונים הראשי (MDF) הוא הקובץ הראשי בבסיס הנתונים של MS SQL Server אשר מאחסן את כל הנתונים, כולל תצוגות, טבלאות, פרוצדורות מאוחסנות, מפתחות זרים ומפתחות ראשיים. לפעמים, כאשר פותחים את קובץ ה-MDF, עשויים להיתקל בבעיה שבה לא ניתן לפתוח את בסיס הנתונים של SQL Server ולהיתקל בשגיאה, כמו זו הנתונה למטה:
- שגיאת SQL Server 5171: MDF אינו קובץ בסיס נתונים ראשי
- לא ניתן לפתוח את הקובץ xxxxx.mdf. שגיאת מערכת ההפעלה 5: (גישה נדחתה)”
- זיהוי אירוע 824: SQL Server זיהה שגיאת I/O על בסיס עקביות לוגית
- Msg 8114, רמה 16, מצב 5, שורה 2: שגיאה בהמרת סוג הנתונים varchar למספרי
שגיאות כאלה בדרך כלל מתרחשות כאשר ישנה שחיתות בקובץ ה-MDF. במאמר זה, נסביר את האפשרויות שמאחורי השחיתות של קבצי MDF ונראה כיצד לתקן קבצי MDF פגומים ולפתור את הבעיה.
סיבות לשחיתות בקובץ ה-MDF
ישנן מגוון סיבות שיכולות להוביל לשחיתות בקובץ בסיס הנתונים של SQL Server (MDF). כמה מהנפוצות ניתנות למטה:
קריסת MS SQL Server או מערכת
MS SQL Server או המערכת עשויים לקרוס בגלל בעיות עם מערכת ההפעלה, חומרה או תוכנה. אם השרת או המערכת קורסים כאשר עובדים על קובץ ה-MDF, זה יכול להזיק או לשחית את הקובץ.
כיבוי פתאומי של המערכת
כשל חשמל פתאומי או כיבוי כפוי של המערכת בזמן ש-SQL Server פועל יכולים לשחוק את קובץ ה-MDF המאוחסן במערכת שלך.
נוזקות או התקפות וירוסים
נוזקות או וירוסים יכולים גם לפגוע בקבצי MDF ולהפוך אותם לבלתי נגישים. זה קורה בדרך כלל כאשר במערכת שלך אין תוכנת אנטי-וירוס או אנטי-נוזקה.
בעיות עם כונן האחסון
סקטורים רעים על כונן האחסון או שגיאות במערכת הקבצים יכולים לפגוע בקבצי מסד הנתונים של SQL. אם הכונן פגום, זה יכול גם לגרום לשחיקה בקבצי ה-MDF.
שיטות לפתור את בעיית 'לא ניתן לפתוח את מסד הנתונים' עקב שחיקת קובץ MDF
אם קובץ ה-MDF שלך פגום, תוכל לעקוב אחר השיטות המוזכרות למטה כדי לתקן ולשחזר את קובץ ה-MDF הפגום, ובכך לפתור את בעיית “לא ניתן לפתוח את מסד הנתונים” ב-SQL Server.
שיטה 1: שחזור קובץ ה-MDF מגיבוי
אם יצרת גיבוי של קובץ ה-MDF שלך, תוכל לשחזר את הקובץ מהגיבוי. אך לפני השחזור, עליך לבדוק אם הגיבוי שלך שלם ונגיש. לשם כך, תוכל להשתמש בפקודת RESTORE VERIFY ONLY. אם פקודה זו מציגה הודעת הצלחה, תוכל להמשיך לשחזר את הגיבוי. לשם כך, השתמש בפקודת SQL Transact למטה:
BACKUP DATABASE [AdventureWorks2019] TO DISK = N’C:\backups\AdventureWorks2019.bak’ WITH NOFORMAT, NOINIT, NAME = N’AdventureWorks2019-Full Database Backup’, SKIP, NOREWIND, NOUNLOAD, STATS = 10
GO
כחלופה, אתה יכול להשתמש ב-SQL Server Management Studio (SSMS) כדי לשחזר את הגיבוי.
שיטה 2: השתמש בפקודת DBCC CHECKDB
אם הגיבוי אינו מעודכן או שיש בעיה במהלך שחזור קובץ הגיבוי, אז אתה יכול להשתמש ב-פקודת DBCC CHECKDB כדי לתקן את קובץ ה-MDF הפגום. כדי לתקן את קובץ המסד נתונים, עליך לוודא שיש לך זכויות ניהול על המסד נתונים. לפני התיקון, הגדר את המסד נתונים למצב משתמש יחיד באמצעות הפקודה למטה:
ALTER DATABASE Dbtesting SET SINGLE_USER
אם אינך מצליח להגדיר את המסד נתונים למצב SINGLE_USER
, אז ודא ש-AUTO_UPDATE_STATISTICS_ASYNC option מוגדר ל-OFF
.
לאחר מכן, הרץ את DBCC CHECKDB
כפי שניתן למטה כדי לתקן את קובץ המסד נתונים (MDF):
DBCC CHECKDB (N ’Dbtesting’, REPAIR_ALLOW_DATA_LOSS) WITH ALL_ERRORMSGS, NO_INFOMSGS
GO
כאשר המסד נתונים מתוקן, הגדר אותו שוב למצב MULTI_USER
באמצעות הפקודה למטה:
ALTER DATABASE Dbtesting SET MULTI_USER
הערה: הפקודה DBCC CHECKDB
יכולה לעזור לך לתקן את קובץ ה-MDF. עם זאת, במהלך תיקון הקובץ, היא עשויה לשחרר דפים או שורות, מה שעלול לגרום לאובדן נתונים.
שיטה 3: השתמש בכלי תיקון SQL מקצועי
תיקון מסד הנתונים SQL באמצעות הפקודה DBCC CHECKDB
עם אפשרות REPAIR_ALLOW_DATA_LOSS
עשוי להוביל לאובדן נתונים. כדי למנוע אובדן נתונים, תוכל להשתמש בתוכנת תיקון MS SQL חזקה, כמו Stellar Repair for MS SQL. תוכנה זו יכולה לתקן קבצי MDF פגומים ולשחזר את כל אובייקטי הקובץ, כמו מפתחות ראשיים, טבלאות, טריגרים, תצוגות וכו', מבלי לשנות את המבנה המקורי. היא שומרת את נתוני הקובץ המתוקן בקובץ MDF חדש ובפורמטים שונים אחרים, כמו CSV, HTML ו-XLS. התוכנה תומכת בקבצי מסד נתונים SQL (MDF ו-NDF) שנוצרו על מערכות Windows ו-Linux.
לסיכום
הבעיה 'המסד נתונים לא יכול להיפתח' ב-MS SQL Server עשויה להתרחש עקב פגם בקובץ ה-MDF. כדי לתקן בעיה זו, הדרך הקלה ביותר היא לשחזר את קובץ ה-MDF מהגיבוי האחרון. אם קובץ הגיבוי אינו עדכני או שאינו פועל, תוכל להשתמש בפקודת DBCC CHECKDB
כדי לתקן את קובץ ה-MDF הפגום. אם הפקודה DBCC CHECKDB
נכשלת בתיקון מסד הנתונים, השתמש בכלי תיקון SQL חזק, כמו Stellar Repair for MS SQL. הוא יכול לתקן קבצי MDF פגומים ולשחזר את כל הנתונים לקובץ MDF חדש עם שלמות מלאה. תוכל להתקין את הגרסה החינמית של Stellar Repair for MS SQL כדי לסרוק את קובץ ה-MDF הפגום ולהציג את הנתונים שניתן לשחזר.
Source:
https://dzone.com/articles/resolve-sql-server-database-cannot-be-opened-mdf-issue