KB2587511-FIX: שגיאה כאשר התראת תנאי ביצועים של SQL Server מורמת ב-SQL Server 2008 R2

Microsoft מפיצה את Microsoft SQL Server 2008 R2 Service Pack 1 (SP1) כקובץ הניתן להורדה. מאחר שהתיקונים מצטברים, כל מהדורה חדשה מכילה את כל התיקונים החמים וכל עדכוני האבטחה שנכללו במהדורת העדכון הקודמת של SQL Server 2008 R2 Service Pack 1 (SP1).

תופעות

כאשר התראת תנאי ביצועים של SQL Server מורמת ב-Microsoft SQL Server 2008 R2, אתה עשוי לקבל את הודעת השגיאה הבאה:

Msg 512, רמה 16, מדינה 1, הליך sp_sqlagent_get_perf_counters, Line 40Subquery החזיר יותר מערך אחד. פעולה זו אינה מותרת כאשר שאילתת המקדימה מופיעה =,! =, <, < =, >, > = או כאשר שאילתת המידה משמשת כביטוי.

בנוסף, הודעת השגיאה נרשמת ביומן השגיאות של SQL Server Agent במצב זה.הערה בעיה זו מתרחשת גם ב-Microsoft SQL Server 2008.

סיבה

בעיה זו מתרחשת מאחר ששאילתת המכלים של הפרוצדורה המאוחסנת של msdb.dbo.sp_sqlagent_get_perf_counters ערכת מחשבת את הערך של מונה באופן שגוי. שאילתת הכניסה חסרה קשרי גומלין פנימיים של join עבור העמודה [object_name] בתנאי שאילתת המידה. לכן, שורות מרובות מוחזרים באופן שגוי, והבעיה המוזכרת בסעיף ' מאפייני הבעיה ' מופיעה.הערה הפרוצדורה המאוחסנת של מערכת הmsdb.dbo.sp_sqlagent_get_perf_counters מופעלת כאשר התראת תנאי ביצועים של SQL Server מורמת.

פתרון

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

חבילת עדכון מצטבר 3 עבור SQL Server 2008 R2 SP1

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

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

2567616 בונה SQL Server 2008 R2 שהופצו לאחר ש-SQL Server 2008 R2 SP1 הופץ

פתרון

כדי לעקוף בעיה זו, עדכן את שאילתת המדרוג של הפרוצדורה המאוחסנת של מערכת הmsdb.dbo.sp_sqlagent_get_perf_counters . לשם כך, הוסף את התנאי הבא לפסוקית where של ארבעת שאילתות השאילתות הנמצאות בשימוש בחישוב העמודה [value] :

(spi1.[object_name] = spi2.[object_name])

לאחר הוספת התנאי, שאילתות השאילתות דומות לבאות:

SELECT CASE spi2.cntr_value WHEN 0 THEN 1 ELSE spi2.cntr_value ENDFROM sys.dm_os_performance_counters spi2WHERE (spi1.[object_name] = spi2.[object_name])AND (spi1.counter_name + ' ' = SUBSTRING(spi2.counter_name, 1, PATINDEX('% Base%', spi2.counter_name)))AND (spi1.instance_name = spi2.instance_name)AND (spi2.cntr_type = @perfTypeLargeRawBase

מצב

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

זקוק לעזרה נוספת?

הרחב את הכישורים שלך
סייר בהדרכה
קבל תכונות חדשות לפני כולם
הצטרף למשתתפי Microsoft insider

האם מידע זה היה שימושי?

תודה על המשוב!

תודה על המשוב! נראה שכדאי לקשר אותך לאחד מנציגי התמיכה של Office.

×