תיקון: הנעילות של טבלה הם לא הוסלם בעת הוספת שורות רבות לתוך טבלה ב- SQL Server 2008 או ב- SQL Server 2008 R2

חל על: SQL Server 2008 Service Pack 4SQL Server 2008 R2 Service Pack 3

תופעות


שקול את התרחיש הבא:
  • הוספת שורות רבות לתוך טבלה ב- Microsoft SQL Server 2008 או ב- SQL Server 2008 R2 באמצעות אחת השאילתות הבאות:
    • INSERT INTO <target_table> SELECT * FROM <target_table> WHERE <predicate>
    • SELECT * INTO <target_table> FROM <source_table> WHERE <predicate>
    הערות
    • מציין מיקום של < target_table > מייצג את שם טבלת היעד בפועל.
    • מציין המיקום < פרדיקאט > מייצג את הפרדיקאט בפועל.
    • מציין המיקום < source_table > מייצג את טבלת המקור בפועל.
  • חריגה מסף הסלמה של נעילה של הטבלה.
בתרחיש זה, מנוע מסד הנתונים לא הפנה לגורם בכיר יותר הנעילות של הטבלה.

סיבה


בעיה זו מתרחשת כיוון ש- SQL Server אינו סופר באופן פנימי את כל הנעילות חדשות הנוצרות על-ידי פעולות הוספה. לכן, סף הסלמה נעל עשוי לא יופעל כאשר הוא נדרש.

פתרון


מידע אודות חבילת שירות עבור SQL Server 2008

כדי לפתור בעיה זו, השג ה-service pack העדכני עבור SQL Server 2008.For מידע נוסף, לחץ על מספר המאמר שלהלן כדי להציג את המאמר הרלוונטי מתוך Microsoft Knowledge Base:
968382 כיצד ניתן להשיג את ה-service pack העדכני עבור SQL Server 2008

מידע אודות חבילת שירות עבור SQL Server 2008 R2

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

מצב


Microsoft אישרה כי מדובר בבעיה במוצרי Microsoft הרשומים במקטע 'חל על'.בעיה זו תוקנה לראשונה ב- SQL Server 2008 Service Pack 2 עבור SQL Server 2008.This הבעיה תוקנה לראשונה ב- SQL Server 2008 R2 Service Pack 1 עבור SQL Server 2008 R2.

מידע נוסף


לקבלת מידע נוסף אודות נעילת הסלמה, בקר באתר האינטרנט הבא של Microsoft TechNet:כדי לקבוע אם הוסלם הנעילות של טבלה, הפעל במשפטי Transact-SQL הבא:
USE tempdbGOCREATE TABLE x (i INT NOT NULL PRIMARY KEY)GOBEGIN TRANINSERT xSELECT TOP (40000)ROW_NUMBER() OVER (ORDER BY (SELECT NULL)) AS rFROM master..spt_values a, master..spt_values bORDER BYrSELECTCOUNT(*)FROM sys.dm_tran_locksWHERE request_session_id = @@SPID ROLLBACKGODROP TABLE x 
אם אתה הוסלם הנעילות של הטבלה, משפט SELECT האחרון מחזירה ערך של 1 או 2. אם לא הם הוסלם של הנעילות של הטבלה, משפט SELECT האחרון מחזירה ערך של 40,066 או 40,067.