חל על
SQL Server 2012 Enterprise

תופעות

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

  • התקנת מופע של Microsoft SQL Server 2005, של Microsoft SQL Server 2008 או של Microsoft SQL Server 2008 R2.

  • המופע של SQL Server נקרא INST1 ומארח מסד נתונים בשם Test_RO_FG_DB.

  • מסד הנתונים מכיל את קבוצות הקבצים הבאות:

    • הראשי

    • RO_FG

    • RW_FG

  • קבוצת הקבצים ששמה RO_FG מסומנת READ_ONLY.

  • התקנת מופע חדש של Microsoft SQL Server 2012. מופע זה של SQL Server 2012 נקרא INST2.

  • אתה מנתק את Test_RO_FG_DB הנתונים מ- INST1.

  • אתה מנסה לצרף את מסד Test_RO_FG_DB הנתונים ל- INST2.

  • אתה מקבל הודעת שגיאה הדומה להודעה הבאה:

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

  • אתה מנסה לחבר מחדש את מסד Test_RO_FG_DB ל- INST1.

בתרחיש זה, לא ניתן לחבר מחדש את מסד הנתונים ל- INST1. בנוסף, אתה מקבל את הודעת השגיאה הבאה ביומן SQL Server שגיאה:

הערה בעיה זו מתרחשת רק כאשר אתה מנסה לצרף מסד נתונים המכיל קבוצת קבצים המסומנת READ_ONLY. בעיה זו אינה מתרחשת כאשר אתה מנסה להעביר READ_ONLY נתונים שבו כל הנתונים מסומנים READ_ONLY.

סיבה

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

מצב

Microsoft אישרה כי זוהי בעיה במוצרי Microsoft המפורטים בסעיף "חל על".

פתרון

מידע עדכון מצטבר

SQL Server 2012

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

2703275 חבילת עדכון מצטבר 2 עבור SQL Server 2012Note מאחר גירסאות ה- Build הם מצטברים, כל פרסום תיקון חדש מכיל את כל התיקונים החמים ואת כל תיקוני האבטחה שנכללו במהדורה הקודמת של SQL Server 2012 תיקון. Microsoft ממליצה לשקול להחיל את מהדורת התיקון העדכנית ביותר המכילה תיקון חם זה. לקבלת מידע נוסף, לחץ על מספר המאמר הבא כדי להציג את המאמר מתוך מאגר הידע Microsoft Knowledge Base:

2692828 גירסאות build SQL Server 2012 שפורסמו לאחר SQL Server 2012 הופץ עליך להחיל תיקון חם של SQL Server 2012 על התקנה של SQL Server 2012.

פתרון

כדי לעקוף בעיה זו, השתמש באחת מהשיטות הבאות.שיטה 1שחזר גיבוי של מסד הנתונים מ- INST1 ב- INST2.הערה הבעיה המתוארת בסעיף 'מאפייני הבעיה' אינה מתרחשת ב- SQL Server 2012 בעת שחזור גיבוי מגירסה קודמת.שיטה 2בצע שדרוג במקום של הגירסה הקודמת של SQL Server כדי SQL Server 2012.שיטה 3העבר מסד נתונים המכיל קבוצת קבצים לקריאה בלבד למופע של SQL Server 2012. לשם כך, בצע את השלבים הבאים.הערה בצע את שלבים 4 עד 11 בשרת שבו פועל SQL Server 2012. לדוגמה, בצע את שלבים 4 עד 11 ב- INST2.

  1. ב- INST1, נתק את מסד הנתונים. לדוגמה, נתק את Test_RO_FG_DB הנתונים.

  2. העבר את קבצי מסד הנתונים לשרת המארח את המופע INST2.

  3. נסה לצרף את מסד הנתונים ל- INST2. הקוד לדוגמה הבא מראה כיצד לעשות זאת:

    CREATE DATABASE [Test_RO_FG_DB] ON PRIMARY ( NAME = N'Test_RO_FG', FILENAME = N'C:\Program Files\Microsoft SQL Server\MSSQL11.SQL2012\MSSQL\DATA\Test_RO_FG.mdf' ), FILEGROUP [RO_FG] ( NAME = N'Test_RO_FG_File1', FILENAME = N'C:\Program Files\Microsoft SQL Server\MSSQL11.SQL2012\MSSQL\DATA\Test_RO_FG_File1.ndf' ), FILEGROUP [RW_FG] ( NAME = N'Test_RW_FG_File1', FILENAME = N'C:\Program Files\Microsoft SQL Server\MSSQL11.SQL2012\MSSQL\DATA\Test_RW_FG_File1.ndf' )LOG ON ( NAME = N'Test_RO_FG_log', FILENAME = N'C:\Program Files\Microsoft SQL Server\MSSQL11.SQL2012\MSSQL\DATA\Test_RO_FG_log.ldf' )FOR ATTACH;GO

    הערה תקבל את הודעת השגיאה 3425 המוזכרת בסעיף "מאפייני הבעיה".

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

    rename Test_RO_FG.mdf original_Test_RO_FG.mdfrename Test_RO_FG_File1.ndf original_Test_RO_FG_File1.ndfrename Test_RW_FG_File1.ndf original_Test_RW_FG_File1.ndfrename Test_RO_FG_log.ldf original_Test_RO_FG_log.ldf 
  5. ב SQL Server Management Studio, צור מסד נתונים בעל שם ומבנה פיזי זהים לזה של מסד הנתונים שברצונך לצרף. הקוד לדוגמה הבא מראה כיצד לעשות זאת:

    CREATE DATABASE [Test_RO_FG_DB] ON PRIMARY ( NAME = N'Test_RO_FG_DB', FILENAME = N'C:\Program Files\Microsoft SQL Server\MSSQL11.SQL2012\MSSQL\DATA\Test_RO_FG_DB.mdf' , SIZE = 4072KB , MAXSIZE = UNLIMITED, FILEGROWTH = 1024KB ), FILEGROUP [RO_FG] ( NAME = N'Test_RO_FG_File1', FILENAME = N'C:\Program Files\Microsoft SQL Server\MSSQL11.SQL2012\MSSQL\DATA\Test_RO_FG_File1.ndf' , SIZE = 8192KB , MAXSIZE = UNLIMITED, FILEGROWTH = 1024KB ), FILEGROUP [RW_FG] ( NAME = N'Test_RW_FG_File1', FILENAME = N'C:\Program Files\Microsoft SQL Server\MSSQL11.SQL2012\MSSQL\DATA\Test_RW_FG_File1.ndf' , SIZE = 8192KB , MAXSIZE = UNLIMITED, FILEGROWTH = 1024KB )LOG ON ( NAME = N'Test_RO_FG_log', FILENAME = N'C:\Program Files\Microsoft SQL Server\MSSQL11.SQL2012\MSSQL\DATA\Test_RO_FG_log.ldf' , SIZE = 1024KB , MAXSIZE = 2048GB , FILEGROWTH = 10%)GO
  6. הגדר את מסד הנתונים למצב לא מקוון. לשם כך, הפעל את הפקודה הבאה:

    ALTER DATABASE [Test_RO_FG_DB] SET OFFLINEGO 
  7. בשורת פקודה, שנה את שמות הקבצים במסד הנתונים החדש. הפקודה לדוגמה הבאה מראה כיצד לעשות זאת:

    rename Test_RO_FG.mdf new_Test_RO_FG.mdfrename Test_RO_FG_File1.ndf new_Test_RO_FG_File1.ndfrename Test_RW_FG_File1.ndf new_Test_RW_FG_File1.ndfrename Test_RO_FG_log.ldf new_Test_RO_FG_log.ldf 
  8. בשורת פקודה, שנה את שמות הקבצים במסד הנתונים שהעברת בשלב 2. שנה את שמות הקבצים כך שיתאים למסד הנתונים שיצרת בשלב 4. הפקודה לדוגמה הבאה מראה כיצד לעשות זאת:

    rename original_Test_RO_FG.mdf Test_RO_FG.mdf rename original_Test_RO_FG_File1.ndf Test_RO_FG_File1.ndf rename original_Test_RW_FG_File1.ndf Test_RW_FG_File1.ndf rename original_Test_RO_FG_log.ldf Test_RO_FG_log.ldf 
  9. הגדר את מסד הנתונים למצב מקוון. לשם כך, הפעל את הפקודה הבאה:

    ALTER DATABASE [Test_RO_FG_DB] SET ONLINEGO 
  10. ודא שמסד הנתונים מקוון וחדש את הפונקציונליות של מתווך השירות.

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

    del /P new_Test_RO_FG.mdfdel /P new_Test_RO_FG_File1.ndfdel /P new_Test_RW_FG_File1.ndfdel /P new_Test_RO_FG_log.ldf 

שיטה 4צרף מחדש מסד נתונים המכיל קבוצת קבצים לקריאה בלבד למופע מוקדם יותר של SQL Server. לשם כך, בצע את השלבים הבאים.הערות

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

  • בצע את שלבים 3 עד 10 בשרת שבו פועלת גירסה קודמת של SQL Server. לדוגמה, בצע את שלבים 3 עד 10 ב- INST1.

  1. העבר את קבצי מסד הנתונים למופע SQL Server המארח את INST1.

  2. נסה לצרף את מסד הנתונים ל- INST1. הקוד לדוגמה הבא מראה כיצד לעשות זאת:

    CREATE DATABASE [Test_RO_FG_DB] ON PRIMARY ( NAME = N'Test_RO_FG_DB', FILENAME = N'C:\Program Files\Microsoft SQL Server\MSSQL10_50.SQL2008R2\MSSQL\DATA\Test_RO_FG_DB.mdf' ), FILEGROUP [RO_FG] ( NAME = N'Test_RO_FG_File1', FILENAME = N'C:\Program Files\Microsoft SQL Server\MSSQL10_50.SQL2008R2\MSSQL\DATA\Test_RO_FG_File1.ndf' ), FILEGROUP [RW_FG] ( NAME = N'Test_RW_FG_File1', FILENAME = N'C:\Program Files\Microsoft SQL Server\MSSQL10_50.SQL2008R2\MSSQL\DATA\Test_RW_FG_File1.ndf' )LOG ON ( NAME = N'Test_RO_FG_log', FILENAME = N'C:\Program Files\Microsoft SQL Server\MSSQL10_50.SQL2008R2\MSSQL\DATA\Test_RO_FG_log.ldf' )FOR ATTACHGO

    הערה תקבל את הודעת השגיאה 3624 המוזכרת בסעיף "מאפייני הבעיה". תקבל גם הודעת שגיאה 1813.

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

    rename Test_RO_FG.mdf original_Test_RO_FG.mdfrename Test_RO_FG_File1.ndf original_Test_RO_FG_File1.ndfrename Test_RW_FG_File1.ndf original_Test_RW_FG_File1.ndfrename Test_RO_FG_log.ldf original_Test_RO_FG_log.ldf 
  4. ב SQL Server Management Studio, צור מסד נתונים בעל שם ומבנה פיזי זהים לזה של מסד הנתונים שברצונך לצרף. הקוד לדוגמה הבא מראה כיצד לעשות זאת:

    CREATE DATABASE [Test_RO_FG_DB] ON PRIMARY ( NAME = N'Test_RO_FG_DB', FILENAME = N'C:\Program Files\Microsoft SQL Server\MSSQL10_50.SQL2008R2\MSSQL\DATA\Test_RO_FG_DB.mdf' , SIZE = 4072KB , MAXSIZE = UNLIMITED, FILEGROWTH = 1024KB ), FILEGROUP [RO_FG] ( NAME = N'Test_RO_FG_File1', FILENAME = N'C:\Program Files\Microsoft SQL Server\MSSQL10_50.SQL2008R2\MSSQL\DATA\Test_RO_FG_File1.ndf' , SIZE = 8192KB , MAXSIZE = UNLIMITED, FILEGROWTH = 1024KB ), FILEGROUP [RW_FG] ( NAME = N'Test_RW_FG_File1', FILENAME = N'C:\Program Files\Microsoft SQL Server\MSSQL10_50.SQL2008R2\MSSQL\DATA\Test_RW_FG_File1.ndf' , SIZE = 8192KB , MAXSIZE = UNLIMITED, FILEGROWTH = 1024KB )LOG ON ( NAME = N'Test_RO_FG_log', FILENAME = N'C:\Program Files\Microsoft SQL Server\MSSQL10_50.SQL2008R2\MSSQL\DATA\Test_RO_FG_log.ldf' , SIZE = 1024KB , MAXSIZE = 2048GB , FILEGROWTH = 10%)GO
  5. הגדר את מסד הנתונים למצב לא מקוון. לשם כך, הפעל את הפקודה הבאה:

    ALTER DATABASE [Test_RO_FG_DB] SET OFFLINEGO 
  6. בשורת פקודה, שנה את שמות הקבצים במסד הנתונים החדש. הפקודה לדוגמה הבאה מראה כיצד לעשות זאת:

    rename Test_RO_FG.mdf new_Test_RO_FG.mdfrename Test_RO_FG_File1.ndf new_Test_RO_FG_File1.ndfrename Test_RW_FG_File1.ndf new_Test_RW_FG_File1.ndfrename Test_RO_FG_log.ldf new_Test_RO_FG_log.ldf 
  7. בשורת פקודה, שנה את שמות הקבצים במסד הנתונים שהעברת בשלב 2. שנה את שמות הקבצים כך שיתאים למסד הנתונים שיצרת בשלב 4. הפקודה לדוגמה הבאה מראה כיצד לעשות זאת:

    rename original_Test_RO_FG.mdf Test_RO_FG.mdf rename original_Test_RO_FG_File1.ndf Test_RO_FG_File1.ndf rename original_Test_RW_FG_File1.ndf Test_RW_FG_File1.ndf rename original_Test_RO_FG_log.ldf Test_RO_FG_log.ldf 
  8. הגדר את מסד הנתונים למצב חירום ובצע תיקון. לשם כך, הפעל את הפקודה הבאה.הערה יומני הטרנזקציות של מסד הנתונים נבנה מחדש במהלך שלב זה. הדבר עלול לגרום לאובדן נתונים. לכן, מומלץ לגבות את מסד הנתונים לפני ביצוע שלב זה.

    ALTER DATABASE Test_RO_FG_DB SET EMERGENCYGOALTER DATABASE Test_RO_FG_DB SET SINGLE_USERGODBCC CHECKDB (Test_RO_FG_DB, repair_allow_data_loss) WITH ALL_ERRORMSGSGOALTER DATABASE Test_RO_FG_DB SET MULTI_USERGO 
  9. ודא שמסד הנתונים מקוון וחדש את הפונקציונליות של מתווך השירות.

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

    del /P new_Test_RO_FG.mdfdel /P new_Test_RO_FG_File1.ndfdel /P new_Test_RW_FG_File1.ndfdel /P new_Test_RO_FG_log.ldf 

מידע נוסף

קיימים כמה שלבים המתרחשים כאשר מסד נתונים מצורף למופע של SQL Server. שלבים אלה כוללים שחזור מסד הנתונים ושדרוג הקבצים מגירסאות קודמות של SQL Server. בבעיה המתוארת בסעיף 'מאפייני הבעיה', SQL Server 2012 מתחיל בתהליך השדרוג לפני זיהוי הקבצים לקריאה בלבד במסד הנתונים. שלבי השדרוג כוללים הפעלת טרנזקציה כדי לנקות את סיבית "כיבוי נקי" בדף האתחול של מסד הנתונים. לגירסאות קודמות של SQL Server אין אפשרות לקרוא את רשומת הטרנזקציה המתחילה. לכן, מסד הנתונים אינו ניתן לשימוש בגירסאות קודמות של SQL Server, SQL Server יוצר את השגיאה 3624.שדרוגיםבמקום כאשר מסד נתונים מסומן לקריאה בלבד בעת ביצוע שדרוג במקום של מופע של SQL Server המכיל מסד נתונים לקריאה בלבד בשם Test_RO_DB ל- SQL Server 2012, ייתכן שתקבל הודעות שגיאה הדומה להודעה הבאה ביומן השגיאות של SQL Server:

בסיום תהליך השדרוג, מסד Test_RO_DB הנתונים יהיה במצב RECOVERY_PENDING חדש. עליך להשתמש בפקודה ALTER DATABASE כדי להגדיר את מסד הנתונים READ_WRITE. לאחר מכן השתמש בפקודה ALTER DATABASE כדי להגדיר את מסד הנתונים READ_ONLY. הדבר מאפשר למנגנון SQL Server לשדרג את מסד הנתונים לגירסה הנכונה.שדרוגים במקום כאשר מסד נתונים לקריאה/כתיבה מכיל קבוצות קבצים המסומנות לקריאה בלבד בעת ביצוע שדרוג במקום ל- SQL Server 2012, ייתכן שתקבל הודעות הדומות להודעה הבאה ביומן SQL Server השגיאות. בעיה זו מתרחשת כאשר המופע המוקדם SQL Server מארח מסד נתונים לקריאה/כתיבה ומ מכיל קבוצות קבצים המסומנות READ_ONLY. עם זאת, תהליך השדרוג הסתיים כצפוי, ומסד הנתונים מתחיל באופן מקוון.הערה הודעת השגיאה הבאה, מסד הנתונים נקרא Test_RO_FG:

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

מעוניין באפשרויות נוספות?

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