לשחזר מושחת SQL Server מסד נתונים של MDF

כאשר אתה SQL Server מסד הנתונים של MDF פגום, אתה יכול להשתמש בשיטות הבאות כדי לשחזר את הנתונים בו, כדי להפחית את האובדן:

הערה: לפני ביצוע פעולות שחזור נתונים, אנא גבה תחילה את קבצי מסדי הנתונים המושחתים של MDF ו-NDF.

  1. קודם כל, אתה יכול לנסות SQL Server פקודה מובנית DBCC CHECKDB כדי לשחזר את מסד הנתונים שלך. בהנחה שקובץ מסד הנתונים הפגום הוא 'MyDatabase.mdf', אז אתה יכול לעשות כדלקמן כדי לשחזר את הנתונים שבתוכו:
    1. מילtart SQL Server.
    2. אין לבצע פעולות כלשהן.
    3. In SQL Server Management Studio, בצע את הצהרות SQL הבאות:
      use master declare @databasename varchar(255) set @databasename='MyDatabase.mdf' exec sp_dboption @databasename, N'single', N'true' -- הגדר את מסד הנתונים של היעד למצב משתמש יחיד dbcc checkdb(@databasename,REPAIR_ALLOW_DATA_LOSS ) dbcc checkdb(@databasename,REPAIR_REBUILD) exec sp_dboption @databasename, N'single', N'false' -- הגדר את מסד הנתונים היעד בחזרה למצב מרובה משתמשים
      

      ההצהרה

      dbcc checkdb(@databasename,REPAIR_ALLOW_DATA_LOSS)
      

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

      בעוד ההצהרה

      dbcc checkdb(@databasename,REPAIR_REBUILD)
      

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

      אז אם אתה לא ב-urgent, אתה יכול קודם כל לנסות לבצע את ההצהרה dbcc checkdb השנייה בלבד, אם ההצהרה הזו לא יכולה לעזור לשחזר את מסד הנתונים, אז אתה יכול לבצע את הפקודה הראשונה והשנייה dbcc checkdb.

      לאחר פעולת התיקון, ניתן להתקשר

      dbcc checkdb('MyDatabase.mdf')
      

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

      מידע מפורט יותר על פקודת dbcc checkdb ניתן למצוא בכתובת https://docs.microsoft.com/en-us/sql/t-sql/database-console-commands/dbcc-checkdb-transact-sql?view=sql-server-ver15

  2. אם לאחר שימוש בשיטה 1, dbcc checkdb עדיין מדווח על שגיאות בטבלאות מסוימות, אתה יכול לנסות SQL Server הפקודה המובנית DBCC CHECKTABLE כדי לשחזר טבלאות אלה במסד הנתונים שלך. בהנחה שקובץ מסד הנתונים הפגום הוא 'MyDatabase.mdf' והטבלה שברצונך לתקן היא 'MyTable', אז תוכל לבצע את הפעולות הבאות כדי לתקן אותה:
    1. מילtart SQL Server.
    2. אין לבצע פעולות כלשהן.
    3. In SQL Server Management Studio, בצע את הצהרות SQL הבאות:
      השתמש ב-MyDatabase.mdf declare @dbname varchar(255) set @dbname='MyDatabase.mdf' exec sp_dboption @dbname,'single user','true' dbcc checktable('MyTable',REPAIR_ALLOW_DATA_LOSS)'DPAIR_DATA_LOSS)'DPAIR_DATA_LOSS' ) exec sp_dboption @dbname,'single user','false'
      

      ההצהרה

      dbcc checktable('MyTable',REPAIR_ALLOW_DATA_LOSS)
      

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

      בעוד ההצהרה

      dbcc checktable('MyTable',REPAIR_REBUILD)
      

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

      אז אם אתה לא ב-urgent, אתה יכול תחילה לנסות לבצע את הצהרת ה-dbcc checktable השני בלבד, אם ההצהרה הזו לא יכולה לעזור לשחזר את מסד הנתונים, אז אתה יכול לבצע את הפקודה הראשונה והשנייה dbcc checktable.

      לאחר שתסיים את פעולת התיקון של כל הטבלאות הפגומות, תוכל להתקשר

      dbcc checkdb('MyDatabase.mdf')
      

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

    מידע מפורט יותר על פקודת dbcc checktable ניתן למצוא בכתובת https://docs.microsoft.com/en-us/sql/t-sql/database-console-commands/dbcc-checktable-transact-sql?view=sql-server-ver15

  3. אם שיטה 1 ו-2 עדיין לא מצליחות לתקן את מסד הנתונים הפגומים או את הטבלאות, או אם השיטות האלה לא מצליחות לשחזר את הנתונים הרצויים, אז אתה יכול להשתמש DataNumen SQL Recovery כדי לשחזר את הנתונים ממסד הנתונים של ה-MDF שלך.