יומן רישום של שחזור עם מצב המתנה בדיסק עיצוב מתקדם עלול לגרום לשגיאה 9004 ב- SQL Server 2008 R2 או SQL Server 2012

Bug #: 96663 (Content Idea)

תופעות

שקול את התרחיש הבא:

  • יש לך שרת Microsoft SQL משלוח יומן או גיבוי/שחזור להגדיר בין שני שרתים.

  • מסד הנתונים הראשי מכיל את קובץ יומן הטרנזקציות (.ldf) המאוחסנים בדיסק בעל "בתים לכל סקטור פיזי" הגדר כ- 512 בתים.

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

  • קובץ יומן הטרנזקציות של מסד הנתונים המשני (.ldf) ממוקם בדיסק בעל "בתים לכל סקטור פיזי" הגדר כ- 4,096 בתים.

בתרחיש זה, פעולת השחזור נכשלת ומחזירה את הודעת השגיאה הבאה:

שגיאה: 9004, סיכון: 16, מצב: 6. אירעה שגיאה בעת עיבוד יומן הרישום עבור מסד הנתונים שמתייחס. אם הדבר אפשרי, שחזר מגיבוי. אם גיבוי אינו זמין, ייתכן שיהיה צורך לבנות מחדש את יומן הרישום.

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

פתרון

עדכון מצטבר

בעיה זו תוקנה לראשונה בעדכון מצטבר הבאים של שרת SQL:

הערה לאחר שתתקין עדכון זה, עליך להפעיל את דגל מעקב 3057 כדי לאפשר תיקון זה. כדי לאפשר דגל מעקב 3057, עיין בנושא דגלי מעקב (Transact-SQL) באתר האינטרנט של רשת מפתחים של Microsoft (MSDN).

כל עדכון מצטבר חדש עבור SQL Server מכיל את כל התיקונים החמים ואת האבטחה התיקונים שנכללו בעדכון המצטבר הקודם. להציג את העדכונים המצטבר העדכני ביותר עבור SQL Server:

הערה עבור מופעים של SQL Server 2008 R2 SP3, עליך לשדרג את השרת על עדכון האבטחה הטרי ביותר לרשותך:

הורד את עדכון האבטחה עבור SQL Server 2008 R2 SP3

Hotfix for SQL Server 2008 R2 SP3To resolve this issue, apply KB 3033860: An on-demand hotfix update package is available for SQL Server 2008 R2 SP3.

התיקון החם עבור SQL Server 2008 R2 SP2תיקון חם נתמך זמין מ-Microsoft. עם זאת, תיקון חם זה מיועד לפתור רק את הבעיה המתוארת במאמר זה. יש להחיל תיקון חם זה רק במערכות שהתעוררה בהן בעיה ספציפית זו. אם התיקון החם זמין להורדה, ישנו סעיף "תיקון חם זמין להורדה" בראש מאמר Knowledge Base. אם מקטע זה אינו מופיע, שלח בקשה לשירות הלקוחות של Microsoft ותמיכה כדי לקבל את התיקון החם. הערה אם בעיות נוספות מתרחשות או אם נדרש פתרון בעיות כלשהו, ייתכן שתצטרך ליצור בקשת שירות נפרדת. דמי התמיכה המקובלים יחולו על שאלות וסוגיות תמיכה נוספות אשר אינן מצריכות את התיקון חם הספציפי הזה. לקבלת רשימה מלאה של מספרי הטלפון של התמיכה ושירות הלקוחות של Microsoft או כדי ליצור בקשת שירות נפרדת, בקר באתר האינטרנט הבא של Microsoft:

http://support.microsoft.com/contactus/?ws=supportהערה הטופס "תיקון חם זמין להורדה" מציג את השפות שעבורן התיקון החם זמין. אם אינך רואה את השפה שלך, הסיבה לכך היא שהתיקון חם אינו זמין עבור שפה זו.

פתרון

Microsoft אישרה כי מדובר בבעיה במוצרי Microsoft הרשומים במקטע 'חל על'. כדי לפתור בעיה זו, השתמש באחת מהדרכים הבאות לעקיפת הבעיה:

  • העבר את קובץ יומן הטרנזקציות ביעד לכונן המכיל "בתים לכל סקטור פיזי" הגדר כ- 512 בתים. הערה הקובץ המתנה עדיין להימצא בכונן בעל "בתים לכל סקטור פיזי" הגדר כ- 4096 בתים.

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

מידע נוסף

באפשרותך להשתמש בכלי השירות של שורת הפקודה Fsutil כדי לקבוע את הערך "בתים לכל סקטור פיזי". אם פרמטר זה אינו מוצג בפלט, עליך להחיל את התיקון החם הנזכר ב- KB982018. כדי לוודא את סוג הכונן שיש לך, בצע את הפעולות הבאות:

  1. הפעל את הפקודה הבאה בשורת פקודה עם הרשאות מלאות:Fsutil fsinfo ntfsinfo x : הערה בפקודה זו, < x > מייצג את הכונן שבו אתה בודק.

  2. השתמש בערכי עבור "בתים לכל סקטור" ו- "בתים לכל סקטור פיזי" כדי לקבוע את סוג הכונן שיש לך. לשם כך, היעזר בטבלה הבאה.

    הערך "בתים לסקטור"

    הערך "בתים לכל סקטור פיזי"

    סוג כונן

    4096

    4096

    4K מקורי

    512

    4096

    עיצוב מתקדם (המכונה גם 512E)

    512

    512

    512 בתים מקורי

Microsoft Internal Support Information

This is a known issue. Refer to VSTS 2780247 for more details. The scenario is very specific to Restore Log with StandBy option.

VSTS: 2780247
Hotfix: 2891952 & 2891962

Call stack of the thread which reports 9004 error message and the input buffer of the same:

Call Site
sqlservr!CImageHelper::DoMiniDump+0x3d4
sqlservr!stackTrace+0x82b
sqlservr!stackTraceCallBack+0x49
sqlservr!ex_raise2+0x21f
sqlservr!ex_raise+0x99
sqlservr!SQLServerLogMgr::CheckLogBlockReadComplete+0x908
sqlservr!SQLServerLogIterForward::TryLogReadAhead+0x85
sqlservr!SQLServerLogIterForward::GetNextBlock+0x25e
sqlservr!SQLServerLogIterForward::GetNext+0xda
sqlservr!RecoveryMgr::AnalysisPass+0x25a
sqlservr!RecoveryMgr::RecoverUpToRollback+0x334
sqlservr!RecoveryMgr::RecoverDb+0x5e
sqlservr!BackupOperation::BringDatabaseToStandby+0x27d
sqlservr!BackupOperation::BringDatabaseOnline+0x59
sqlservr!BackupOperation::CompleteRestore+0x28b
sqlservr!BackupOperation::Restore+0x3bb
sqlservr!BackupEntry::RestoreLog+0x1b6
sqlservr!CStmtLoadXact::XretExecute+0x85
sqlservr!CMsqlExecContext::ExecuteStmts<1,1>+0x3a9
sqlservr!CMsqlExecContext::FExecute+0x986
sqlservr!CSQLSource::Execute+0x7b5
sqlservr!process_request+0x64b
sqlservr!process_commands+0x4e5


RESTORE LOG [CS_DB]
FROM DISK = N'C:\SQLBackup\CS_DB_20140606040347.trn'
WITH FILE = 1
,STANDBY = N'C:\SQLBackup\CS\CS_DB_log_standby.tuf'
,NOUNLOAD
,STATS = 10;

Author ID (email alias): pradm
Writer ID(email alias):
Tech Review ID (email alias): Sureshka; tejasaks; mikez; pradm
Editor ID (email alias): v-mordew; v-jesits

זקוק לעזרה נוספת?

הרחב את הכישורים שלך
סייר בהדרכה
קבל תכונות חדשות לפני כולם
הצטרף למשתתפי Microsoft insider

האם מידע זה היה שימושי?

תודה על המשוב!

תודה על המשוב! נראה שכדאי לקשר אותך לאחד מנציגי התמיכה של Office.

×