תופעות
הנח שהחלת את Microsoft SQL Server 2012 Service Pack 2 (SP2) במחשב שלך. אתה מתקשר לשאילתת הcdc.fn_cdc_get_net_changes_<capture_instance> שינוי לכידת נתונים (cdc) בהליך המאוחסן sp_executesql , והיא עשויה להגיע ממקור יישומים כגון SQL server Management STUDIO server (SSMS), cdc עצמה או את החבילות של שירותי אינטגרציה של sql server (SSIS). במצב זה, אתה נתקל בביצועים גרועים ב-SQL Server 2012.הערה הקטנת הביצועים עשויה להיות גדולה. לדוגמה, שאילתה יכולה להסתיים בכמה שניות ב-SQL Server 2012 SP1. עם זאת, שאילתה זו עשויה להימשך כמה שעות כדי לפעול ב-SQL Server 2012 SP2. בנוסף, עדכון הסטטיסטיקה אינו עוזר לבעיה.
סיבה
בעיה זו מתרחשת עקב בעיה בהערכת המונה המשפיעה קשות על ביצועי השאילתה cdc.fn_cdc_get_net_changes_<capture_instance> .
פתרון
הבעיה נפתרה לראשונה בעדכון המצטבר הבא של SQL Server.
עדכון מצטבר 3 עבור SQL Server 2012 SP2 /en-us/help/3002049
כל עדכון מצטבר חדש עבור SQL Server מכיל את כל התיקונים החמים ואת כל תיקוני האבטחה שנכללו בעדכון המצטבר הקודם. עיין בעדכונים המצטברים האחרונים עבור SQL Server:
פתרון
כדי לעקוף בעיה זו, השתמש ברמז לשאילתה של האפשרות (הידור מחדש) בשאילתה. במקרה שהשאילתה מופעלת מרכיבי SSIS CDC, האפשרות (הידור מחדש) עשויה להיות מחויבת על-ידי יצירת מדריך תוכנית כפי שמוצג בדוגמה הבאה:Exec sp_create_plan_guide @name = N'CDC_Query1_PlanGuide', @stmt = N'select [__$start_lsn],[__$operation],[__$update_mask],[Column1],[Column2],[Column3] from [cdc].[fn_cdc_get_net_changes_dbo_Table1](CONVERT(binary(10), @cs, 1), CONVERT(binary(10), @ce, 1), @mode)',@type = N'SQL',@module_or_batch = NULL, @params = N'@ce nvarchar(22),@mode nvarchar(14),@cs nvarchar(22)', @hints = N'OPTION (RECOMPILE)'; הערה עליך להחליף את שאילתת הדוגמה עם השאילתה שאליה אתה מתמודד עם הבעיה. ניתן לתפס אותו ממעקב הפרופילים , ולכן לא מתווספים בטעות תו נוסף. בנוסף, ודא ששאילתת הבחירה מועברת לשורה אחת (לדוגמה, אין לה אפשרות להחזיר הזנה או הזנה של שורה) כדי שמדריך התוכניות יוכל לפעול בהצלחה. ייתכן שתצטרך גם להשתמש ב- DBCC FREEPROCCACHE כדי לבטל את התוכנית הישנה מהמטמון.
מצב
Microsoft אישרה שזוהי בעיה במוצרי Microsoft המופיעים בסעיף "חל על".