תופעות
בעת ההפעלה של משפט עדכון מורכב יחד עם רמז של NOLOCK נגד טבלה ב-Microsoft SQL Server 2008, SQL Server 2012, sql SERVER 2008 R2 או sql server 2014, ייתכן שתתרחש השחתת אינדקס של nonclustered. בנוסף, ייתכן שהודעת השגיאה הבאה תירשם ביומן השגיאות של SQL Server:
תאריך_LT_ ><Time_GT_ spid שגיאה: 8646, חומרה: 21, State: 1._LT_Date_GT_<Time> spid אין אפשרות למצוא ערך אינדקס במזהה אינדקס 3, של טבלה 2102402659, במסד נתונים ' <שם מסד> '. האינדקס שצוין מושחת או שקיימת בעיה בתוכנית העדכון הנוכחית. הרצת DBCC CHECKDB או DBCC CHECKTABLE. אם הבעיה נמשכת, צור קשר עם המוצר support.<Date><Time_GT_ spid באמצעות הגירסה ' dbghelp. Dll ' 4.0.5 '_lt_Date><Time> מספר האשכולות dump-spid = 0, EC = 0x0000000BD70624C0<Date><Time>-spid * * * Dump של מחסנית נשלח ל-Y:\MSSQL\MSSQL10. MSSQLSERVER\MSSQL\LOG\ SQLDump0003.txt<Date><Time> spid * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *Date* *Time* * * * * *Date* * * * >< >< ><Date>< >< * * * * * * * *Time* * * * * * * * * * * ErrorAbort-corruption< IndexTimeDate><TimeDateDateTime> spid *TimeTimeDate
הערה באפשרותך להחיל רמז של NOLOCK לטבלאות מקור במשפט. עם זאת, אין באפשרותך להחיל רמז של NOLOCK כדי לייעד טבלאות במשפט.
סיבה
בעיה זו מתרחשת מאחר שהרמז של NOLOCK גורם לשאילתה לקרוא באופן שגוי ערכים בטבלה כאשר השאילתה קוראת ערכים מרובים מספר פעמים.
פתרון
הבעיה נפתרה לראשונה בעדכון המצטבר הבא של SQL Server.
עדכון מצטבר 1 עבור SQL Server 2014 /en-us/help/2931693
עדכון מצטבר 11 עבור SQL Server 2012 /en-us/help/2908007
עדכון מצטבר 7 עבור SQL Server 2012 SP1 /en-us/help/2894115
עדכון מצטבר 13 עבור SQL Server 2008 SP3 /en-us/help/2880350
עדכון מצטבר 9 עבור SQL Server 2008 R2 SP2 /en-us/help/2887606
כל עדכון מצטבר חדש עבור SQL Server מכיל את כל התיקונים החמים ואת כל תיקוני האבטחה שנכללו בעדכון המצטבר הקודם. עיין בעדכונים המצטברים האחרונים עבור SQL Server:
מצב
Microsoft אישרה שזוהי בעיה במוצרי Microsoft המופיעים בסעיף "חל על".