תופעות
נניח שהוספת עמודה לטבלה ב-Microsoft SQL Server 2012 או ב-SQL Server 2014. כאשר גודל השורה קרוב לגודל המרבי המותר שהוא 8,060 בתים, פעולת ההוספה עשויה להימשך זמן רב.
סיבה
הבעיה מתרחשת מכיוון שכאשר הגודל הכולל של השורה קרוב לגודל השורה המרבי המותר, SQL Server מבצע סריקה מלאה של הטבלה כדי לוודא שהוספת עמודה חדשה אינה מפירה את שלמות הנתונים. הגירסאות לפני ש-SQL Server 2012 אינם מבצעות בדיקה זו, והדבר מאפשר הפעלה מהירה יותר של שפת הגדרת הנתונים (DDL). עם זאת, אופן פעולה זה נובע מכישלון הפעולות הבאות, כגון עדכון שורות או כיווץ שורות אם גודל השורה חורג מהגודל המותר.
פתרון
העדכון המצטבר מציג דגל מעקב חדש 647 לגבי התנהגות תאימות לאחור. הבעיה נפתרה לראשונה בעדכון המצטבר הבא של SQL Server.
עדכון מצטבר 5 עבור SQL Server 2014 /en-us/help/3011055
עדכון מצטבר 12 עבור SQL Server 2012 SP1 /en-us/help/2991533
עדכון מצטבר 2 עבור SQL Server 2012 SP2 /en-us/help/2983175
כל עדכון מצטבר חדש עבור SQL Server מכיל את כל התיקונים החמים ואת כל תיקוני האבטחה שנכללו בעדכון המצטבר הקודם. עיין בעדכונים המצטברים האחרונים עבור SQL Server:
מידע נוסף
-
באפשרותך להפעיל את דגל המעקב 647 באמצעות הפרמטר startup. לקבלת מידע, ראה אפשרויות אתחול של שירות מנוע מסד נתונים.
-
באפשרותך להפעיל את השאילתה הבאה (החלף את <table name> באמצעות שם הטבלה בפועל) כדי לבדוק את הטבלה המסוימת לפני הפעולה במערכת ייצור, ולתכנן את האפקט של בעיה זו. אם התוצאה גדולה מ-8,060, הטבלה שלך כפופה לבעיה זו. בנוסף, אם השמטת עמודות, עליך לשנות את הטבלה באמצעות האפשרות ' בנה מחדש '. בנייה מחדש של הטבלה יכולה לגרום לשאילתה להחזיר את התוצאות הנכונות.
select 1+1+2 + 2 + (case when sum (case when leaf_offset < 0 then 1 else 0 end) > 0 then 2 else 0 end) + ( (count (*) + 7)/8 ) + count (case when leaf_offset < 0 then 1 else null end) * 2 + sum( case when max_length=-1 then 24 else max_length end) from sys.system_internals_partition_columns col join sys.partitions par on col.partition_id = par.partition_id where object_id = object_id ('<table name>') and index_id in (0,1) and partition_number =1
-
באפשרותך לשקול הוספת עמודות אורך משתנה או עמודות דלילות כאשר היישום שלך מוסיף לעתים קרובות עמודות חדשות לטבלה. זהו פעולה של מטה-נתונים בלבד גם אם הגודל הכולל של כל העמודות חורג מ-8,060 בתים.
מצב
Microsoft אישרה שזוהי בעיה במוצרי Microsoft המופיעים בסעיף "חל על".