KB3041859 - תיקון: בעיית ביצועים מתרחשת בעת שימוש במנהל התקן ODBC sqlncli11.dll כדי לגשת SQL Server ביישום

חל על
SQL Server 2012 Developer SQL Server 2012 Enterprise SQL Server 2012 Standard SQL Server 2014 Developer - duplicate (do not use) SQL Server 2014 Enterprise - duplicate (do not use) SQL Server 2014 Standard - duplicate (do not use)

סימפטומים

נניח שאתה משתמש במנהל התקן של ODBC של sqlncli11.dll כדי לגשת ל- Microsoft SQL Server 2012 או SQL Server 2014 ביישום. בעת שימוש בסמן השרת ובפונקציה SQLFetch/ SQLGetData כדי לגשת לנתונים בינאריים גדולים (BLOB) מסוימים ב SQL Server, מתרחשת בעיית ביצועים במיוחד עבור סוגי נתונים גדולים, כגון varbinary (max) או varchar (max).

גורם

זוהי בעיית עיצוב לצורך יישום הפונקציה SQLFetch/ SQLGetData במנהל התקן ODBC של SQL Server 2012. כאשר השאילתה משתמשת בסמני שרת, מנהל התקן ODBC מפעיל sp_cursorfetch במהלך היישום של SQLFetch והשרת שולח את כל ה- BLOB ללקוח. לאחר מכן, כאשר SQLGetData מבוצע, sp_cursor מחזיר את כל ה- BLOB שוב. עובדה זו משפיעה באופן משמעותי על הביצועים של סוגי נתונים גדולים, כגון varbinary (max) או varchar (max).

פתרון

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

המימוש החדש מפעיל sp_cursoroption כדי להשיג TEXTPTR_ONLY לפני sp_cursorfetch, ולאחר מכן מפעיל sp_cursoroption כדי להחזיר אותו ל- TEXTDATA לפני sp_cursor. הדבר יכול לשפר את הביצועים.

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

המלצה: התקן את העדכון המצטבר האחרון עבור SQL Server

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

      

מצב

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