none
help in d.b restore method using stand alone mdf file RRS feed

  • שאלה

  • Hi all,

    I need your help please.

    Im supporting a client's application.

     once in a while, the client's connectivity goes offline and the other application keeps writing data onto the the clients local server.

    as soon as the connection is back, I need to get from the client his backup in order to push it onto the  first mentioned application database.

    The problem is that the trn/bak file is huge.

    when i   dettach backup to mdf, ndf and ldf, i saw that the log file is the main reason of the backup enormouse size.

    I heard once that theres a way to restore an active d.b. using a stand alone mdf file,

    can someone guide me through?

    Thanks.


    שבת 17 אוגוסט 2013 12:19

תשובות

  • שחזור מקובץ mdf בלבד יכול להיות כרוך באיבוד מידע! ואצלך נראה מהתיאור שלך שבבירור תאבד מידע רב.

    זה אפשרי בדרך כלל אבל קובץ הלוג לא נועד ליופי ויש סיבה שהוא גדל אצלך (צריך לבדוק למה ואם משהו באפיון מצריך שנוי אבל זה נושא אחר). אם תשחזר רק את ה mdf ז"א תעתיק אותו (למשל בעזרת VSS או פשוט DETTACH ואז להעתיק רק אותו) אז כאמור תאבד מידע שנשמר במקומות האחרים.

    האם זה מתאים לך?!?

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

    * זה לא נשמע לי כמו משהו שיכול להתאים לך ונראה לי שאתה צריך לאפיין את המערכת (וההרגשה שלי מהשאלה זה שמאוד כדאי לך להעזר בורם חיצוני) ולקבוע תהליך מסודר שייתן את התשובה לצרכים שלכם. אולי שימוש ב transactional replication או גישה דומה Log shipping, Database Mirroring,Always-On ועוד שיטות ... כאמור אחרי אפיון המערכת תוכלו להגיע לפתרון נכון שמתאים לכם (נכון לאחד לא אומר שזה נכון למישהו אחר)

    אם בכל זאת החלטת שזה מתאים לך אז הנה סירטון קצר שמראה כיצד להתחבר לקובץ MDF אחרי שהעתקת אותו (כאמור כדי להעתיק צריך צריך לבצע תחילה DETTACH או להעתיק עם תכונת VSS).


    signature

    שבת 17 אוגוסט 2013 13:32
    מנחה דיון
  • הי,

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

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

    בהצלחה!

    -----------------------------
    גיא גלנצר
    יועץ ומדריך SQL Server
    Madeira - SQL Server Services
    http://www.madeira.co.il

    יום שלישי 27 אוגוסט 2013 08:16
    מנחה דיון

כל התגובות

  • שחזור מקובץ mdf בלבד יכול להיות כרוך באיבוד מידע! ואצלך נראה מהתיאור שלך שבבירור תאבד מידע רב.

    זה אפשרי בדרך כלל אבל קובץ הלוג לא נועד ליופי ויש סיבה שהוא גדל אצלך (צריך לבדוק למה ואם משהו באפיון מצריך שנוי אבל זה נושא אחר). אם תשחזר רק את ה mdf ז"א תעתיק אותו (למשל בעזרת VSS או פשוט DETTACH ואז להעתיק רק אותו) אז כאמור תאבד מידע שנשמר במקומות האחרים.

    האם זה מתאים לך?!?

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

    * זה לא נשמע לי כמו משהו שיכול להתאים לך ונראה לי שאתה צריך לאפיין את המערכת (וההרגשה שלי מהשאלה זה שמאוד כדאי לך להעזר בורם חיצוני) ולקבוע תהליך מסודר שייתן את התשובה לצרכים שלכם. אולי שימוש ב transactional replication או גישה דומה Log shipping, Database Mirroring,Always-On ועוד שיטות ... כאמור אחרי אפיון המערכת תוכלו להגיע לפתרון נכון שמתאים לכם (נכון לאחד לא אומר שזה נכון למישהו אחר)

    אם בכל זאת החלטת שזה מתאים לך אז הנה סירטון קצר שמראה כיצד להתחבר לקובץ MDF אחרי שהעתקת אותו (כאמור כדי להעתיק צריך צריך לבצע תחילה DETTACH או להעתיק עם תכונת VSS).


    signature

    שבת 17 אוגוסט 2013 13:32
    מנחה דיון
  • תודה רבה על התשובה העניינית, אכן המשמעויות של הפתרון לא מאפשרות שימוש בו,

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

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

    (כנראה שבמקרים מסוימים אין קיצורי דרך).

    תודה רבה על המענה המהיר והמקצועי.


    • נערך על-ידי Shtiv_O יום ראשון 18 אוגוסט 2013 05:44
    יום ראשון 18 אוגוסט 2013 05:43
  • אני שמח שזה עזר :-)

    * דרך אגב אפשר להעתיק את כל קבצי מסד הנתונים בעזרת VSS ואז אין את הבעיות של איבוד מידע תיאורטית. הייתרון שלא צריך לבצע DETACH למסד הנתונים. אבל חייים להעתיק את כל הקבצים ולא רק ה MDF אם רוצים ללכת על יותר בטוח.

    ** תסגור בבקשה את השרשור על ידי סימון התשובה והצבעה על הודעה מועילה

    גלישה מהנה


    signature

    יום שני 19 אוגוסט 2013 04:45
    מנחה דיון
  • אני לא יודע עד כמה VSS יכול לפתור את הבעיה יכול להיות שיש נתונים שיושבים עדיין בזכרון שלא נשמרו לבסיס הנתונים.

    ניתן לקרוא כאן חלק מהבעיות שיש בעבודה של VSS מול SQL

    http://support.microsoft.com/kb/919023

    יום רביעי 21 אוגוסט 2013 07:16
  • זה בדיוק הסיבה שיש לעשות שימוש נכון בכלים ובעיקר לוודא שעובדים עם הכתבן הנכון SqlServerWriter. אם תגיע להרצאה שלי בנושא תוכל להבין לעומק:-) אני גם אציג קוד ב C# שכותבים בכמה דקות של תוכנה בסיסית שמבצעת העתקת צל (VSS).

    עבודה נכונה עם SqlServerWriter שנוסף מגרסת SQL2005 אמורה לפתור את רוב הבעיות. אבל זה נכון שיש הרבה מאוד בעיות הקשורות ל VSS וצריך לדעת להתמודד איתן. הבעיות נובעות בעיקר מהגדרות שמבוצעות בעזרת תוכנה בשם VssAdmin, או נוגעות לנושאי הרשאות או נושאי התחברות לשרת/כתבן הנכון. המשפט הכי נפוץ בנושא בעיות של VSS הוא

    This could be due to environmental issues on the server.

    ההרצאה הבאה שלי בנושא מתוכננת להיות מועברת במייקרוסופט בינואר 2014 אז יש עוד הרבה זמן לכן אם זה מעניין הנה אוסף קישורים בנושא עליהם אני התבססתי בעבר ללמוד ולכתוב את המדריך לעצמי:

    Component Object Model
    http://he.wikipedia.org/wiki/COM
    http://msdn.microsoft.com/en-us/library/ms680573.aspx
    http://en.wikipedia.org/wiki/Component_Object_Model
    Volume Shadow Copy Service
    http://msdn.microsoft.com/en-us/library/windows/desktop/bb968832(v=vs.85).aspx
    Volume Shadow Copy Service
    http://technet.microsoft.com/en-us/library/ee923636.aspx
    A Guide for SQL Server Backup Application Vendors (can be download as word document) 
    http://technet.microsoft.com/en-us/library/cc966520.aspx
    Checkpoints and the Lazy writer
    http://www.sqlservercentral.com/blogs/martin_catherall/2011/05/02/checkpoints-and-the-lazy-writer/
    Copy Large File issue
    http://blogs.technet.com/b/askperf/archive/2007/05/08/slow-large-file-copy-issues.aspx
    C#, WPF – Copy files with progress bar by CopyFileEx API
    http://hintdesk.com/c-wpf-copy-files-with-progress-bar-by-copyfileex-api/
    Open source AlphaVSS Dot.NET class library
    http://alphavss.codeplex.com/
    Troubleshooting VSS Writer issues
    http://sql-blogs.com/2012/01/17/troubleshooting-vss-writer-issues/
    http://technet.microsoft.com/en-us/library/ff597980(v=exchg.80).aspx
    Support policy for Microsoft SQL Server products that are running in a hardware virtualization environment
    http://support.microsoft.com/?id=956893
    Enabling and disabling Windows 2008 application-consistent quiescing on ESXi/ESX (1028881)
    http://kb.vmware.com/selfservice/microsites/search.do?language=en_US&cmd=displayKC&externalId=1028881
    application-consistent quiescing
    http://pubs.vmware.com/vsphere-50/index.jsp?topic=%2Fcom.vmware.datarecovery.admin.doc_20%2FGUID-6F339449-8A9F-48C0-BE70-91A2654A79D2.html


    signature

    יום רביעי 21 אוגוסט 2013 08:35
    מנחה דיון
  • הי,

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

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

    בהצלחה!

    -----------------------------
    גיא גלנצר
    יועץ ומדריך SQL Server
    Madeira - SQL Server Services
    http://www.madeira.co.il

    יום שלישי 27 אוגוסט 2013 08:16
    מנחה דיון
  • שלום ApplicationSupportServices,

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

    אם לא, ספר לנו איך עוד נוכל לעזור...

    תודה!

    -----------------------------
    גיא גלנצר
    יועץ ומדריך SQL Server
    Madeira - SQL Server Services
    http://www.madeira.co.il

    יום שלישי 03 ספטמבר 2013 06:49
    מנחה דיון