דלג לתוכן הראשי
היכנס דרך Microsoft
היכנס או צור חשבון.
שלום,
בחר חשבון אחר.
יש לך חשבונות מרובים
בחר את החשבון שברצונך להיכנס באמצעותו.

תופעות

User-Defined פונקציות (UDFs) המיושמות ב- Transact-SQL ומחזירות ערך נתונים יחיד נקראות פונקציות שיטתיות של T-SQL User-Defined (UDFs). 

התכונה Scalar UDF Inlining הוצגה ב- Microsoft SQL Server 2019. תכונה זו יכולה לשפר את הביצועים של שאילתות אשר מפעילות קבצי PDF שיטתיים של T-SQL שבהם ביצוע UDF הוא צוואר הבקבוק הראשי. חלוקה לרמות שיטתית של T-SQL ב- UDF ממירה באופן אוטומטי קבצי PDF ניתנים לקווים מוטבעים לביטויים יחסיים. 

עדכון מצטבר זה (CU) כולל כמה תיקונים בין האזורים הבאים עבור תרחישים שבהם שאילתה המשתמשת ב- Inlining של UDF שיטתי עשויה להחזיר הודעת שגיאה או תוצאות בלתי צפויות:

  • שגיאת אי-התאמה של סוג מתרחשת אם סוג ההחזרה של UDF הוא sql_variant (נוסף ב- SQL Server 2019 CU2).

  • בקשת UDF מ-sp_executesqlמבטלת את הביצוע (נוסף ב- SQL Server 2019 CU2).

  • מסמכי UDFs המפנה לתוויות ללא GOTO משויכת יחזירו תוצאות שגויות (שנוספו ב- SQL Server 2019 CU2).

  • מצבים של הזיכרון אזלו ודליפות זיכרון מתרחשות עקב קבצי UDFs סרגליים גדולים מאוד (SQL Server 2019 CU2).

  • משתנים שלא אותחלו המשמשים במשפטי תנאי (IF-ELSE) לגרום לשגיאות (SQL Server 2019 CU2).

  • שגיאת המרה מפורשת מתרחשת אם UDF מכיל את פרמטר sql_variant(נוסף ב- SQL Server 2019 CU7).

  • מתרחשת שגיאה אם הפונקציה הסרגלית מפנה CHECKSUM(נוסף ב- CU7 SQL Server 2019).

  • בקשת UDF הכוללת הערכות חוזרות רבות של ביטויים שיטתיים עלולה לגרום לשגיאה מתזמן שאינו מניבה (נוספה ב- SQL Server 2019 CU7).

    הערה: התיקון לבעיה זו עלול לגרום לעתים ל רגרסיה בביצועים. כדי לצמצם את רגרסיית הביצועים, באפשרותך להפוך את התיקון המקורי ללא זמין על-ידי הפעלת דגל מעקב (TF) 13156.

    Microsoft פועלת למציאת תיקון עבור רגרסיית ביצועים זו, שזמינה ב- CU עתידי.

  • מתרחשת שגיאה אם שאילתת ההפניה של UDF משתמשת OPTION (RECOMPILE)(נוסף ב- SQL Server 2019 CU7).

  • שגיאות הרשאה מתרחשות אם תצוגות מפעילות קבצי PDF מוטבעים (שנוספו ב- SQL Server 2019 CU9).

  • הפרות גישה מתרחשות אם נעשהquery_tsql_scalar_udf_inlinedXEvent (נוסף ב- SQL Server 2019 CU9).

  • אופן פעולה לא עקבי מתרחש מאחר Scalar UDF Inlining does not respect the QUERY_OPTIMIZER_COMPATIBILITY_LEVEL_nquery hint (added in SQL Server 2019 CU9).

  • קבצי UDFs המכילים חלוקה לרמות מכילים צבירה שעלולה לגרום לשגיאות מתזמן שאינן מניבה (שנוספו ב- SQL Server 2019 CU9).

  • שגיאות 'אין זיכרון פנוי' מתרחשות עקב רצף של פעולות שיטתיות באותו משתנה בבלוקים מותנים (שנוספו ב- SQL Server 2019 CU9).

  • לאחר שדרוג ל- CU9, הפרת גישה מתרחשת אם אובייקט מפעיל UDF (UDF1) סקארי הניתן לעריכה (UDF1) בעל UDF (UDF2) סקארי הניתן לעריכה, המשמש פרמטר קלט (נוסף ב- SQL Server 2019 CU11).

  • חלוקה לרמות של קבצי PDF עלולה לגרום לשגיאות וליצור קודי שגיאה 6846, 1011 ו- 107 (נוסף ב- SQL Server 2019 CU11).

  • חלוקה לרמות של קבצי PDF אשר פועלים כחשבון שאינו sysadmin עשויה להחזיר את הודעת השגיאה, "אירעה שגיאה חמורה בפקודה הנוכחית.  התוצאות, אם קיימות, יש למחוק" (נוסף ב- SQL Server 2019 CU16).

  • הפרת גישה מתרחשת אם טבלאות זמניות מופעלות בתוך קבצי UDFs באמצעות מילים נרדפות (שנוספו ב- Microsoft SQL Server 2022 CU1 ו- SQL Server 2019 CU19).

  • הפרת גישה מתרחשת אם הגדרת UDF מכילה רק תוויות GOTO ו משפטRETURN (נוסף ב- SQL Server 2022 CU1 ו- SQL Server 2019 CU19).

  • הפונקציה Scalar UDF מחזירה תוצאות בתבניות תאריך ושעה שונות כאשר התכונה Scalar UDF Inlining מופעלת (נוספה ב- SQL Server 2022 CU3 ו- SQL Server 2019 CU20).

  • קובץ Dump נוצר אם שאילתה הכוללת משפט GROUP BY משתמשת בקבצי UDFs מוטבעים במשפט SELECT ללא פונקציית צבירה (שנוספה ב- SQL Server 2022 CU12 וב- SQL Server 2019 CU26).

  • השגיאה "חריגה מרמה מרבית של פרוצדורה מאוחסנת, פונקציה, גורם מפעיל או תצוגה של קינון (מגבלה 32)" מתרחשת אם התכונה Scalar UDF Inlining מופעלת, גם אם רמת הקינון אינה חריגה (נוספה ל- SQL Server 2022 CU12 ו- SQL Server 2019 CU26).

  • פגם בזיכרון מתרחש sqllang.dll!CProchdr::FDeriveInlineabilityOfScalarUdf אם התכונה Scalar UDF Inlining מופעלת (נוספה ב- SQL Server 2022 CU12 ו- SQL Server 2019 CU26).

עדכון מצטבר זה חוסם גם חלוקה לרמות בתרחישים הבאים:

  • אם ה- UDF מפנה לפונקציות פנימיות מסוימות (לדוגמה, @@ROWCOUNT) שעשויות לשנות את התוצאות כאשר UDF מסומן ב- inlined (נוסף ב- SQL Server 2019 CU2).

  • כאשר פונקציות צבירה מועברות כפרמטרים ל- UDF סקארי (נוסף ב- SQL Server 2019 CU2).

  • אם UDF מפנה אל תצוגות מוכללות (לדוגמה: OBJECT_ID) (נוסף ב- SQL Server 2019 CU2).

  • אם UDF משתמש בפעולות שירות של XML (שנוספו ב- SQL Server 2019 CU4).

  • אם ה- UDF מכיל SELECTמשתמש במשפטORDER BYאך לא TOP 1(נוסף ב- SQL Server 2019 CU4).

  • אם משפטSELECT מבצע הקצאה יחד עם משפט ORDER BY (לדוגמה, SELECT @x = @x +1 FROM table ORDER BY column_name) (נוסף ב- SQL Server 2019 CU4).

  • אם UDF מכיל משפטי RETURN מרובים (נוספים ב- CU5 SQL Server 2019).

  • אם מתבצעת קריאה ל- UDF RETURN (נוסף ב- CU5 SQL Server 2019).

  • אם UDF מפנה לפונקציה STRING_AGG (שנוספה ב- SQL SERVER 2019 CU5).

  • אם הגדרת UDF מפנה לטבלאות מרוחקות (נוסף ב- SQL Server 2019 CU6).

  • אם שאילתת השיחות ב- UDF משתמשת GROUPING SETS, CUBE, או ROLLUP (נוספת ב- SQL Server 2019 CU6).

  • אם שאילתת השיחות UDF מכילה משתנה המשמש פרמטר UDF עבור הקצאה (לדוגמה, SELECT @y=2, @x=UDF(@y)) (נוסף ב- SQL Server 2019 CU6).

  • אם ה- UDF מפנה לעמודות מוצפנות (שנוספו ב- SQL Server 2019 CU11).

  • אם ה- UDF מכיל הפניות WITH XMLNAMESPACES(נוסף ב- SQL Server 2019 CU11).

  • אם השאילתה מפעילה את UDF כוללת ביטויי טבלה נפוצים (CTEs) (שנוספו ב- SQL Server 2019 CU11).

  • אם הגדרת UDF מכילה טבלאות זמניות או מילים נרדפות עבור טבלאות זמניות (נוסף ב- SQL Server 2022 CU1 ו- SQL Server 2019 CU19).

  • אם הגדרת UDF כוללת משפטSELECTיחד עם משפטDISTINCTבעמודות הקצאה מרובות (נוסף ב- SQL Server 2022 CU4 ו- SQL Server 2019 CU20).

  • אם UDF מכיל משפט SELECT המשתמש במשפט ה- TABLESAMPLE PERCENT והקצאות מרובות של משתנים (נוסף ב- SQL Server 2022 CU7).

  • אם קיימת שאילתת INSERT בטבלה שאליה מפנה תצוגה כוללת אינדקס המכילה UDF (נוסף ב- SQL Server 2022 CU12 ו- SQL Server 2019 CU26).

לאחר שדרוג ל- SQL Server 2019 CU2, אך לפני השדרוג ל- SQL Server 2019 CU5, עליך להעריך מחדש אם UDF זכאי לחלוקה לרמות. לשם כך, רענן קבצי PDF שיטתיים זכאים באמצעות אחת מהשיטות הבאות:

  • הפעל sp_refreshsqlmodule עבור קבצי PDF שיטתיים ישימים. לקבלת מידע נוסף אודות פרוצדורה מאוחסנת זו של המערכת, ראה sp_refreshsqlmodule (Transact-SQL).

  • שנה או צור מחדש את ה- UDF הסרגלי הקיים באמצעות הגדרות, הרשאות והגדרת מאפיינים קיימים. לקבלת מידע נוסף, ראה הפונקציה ALTER (Transact-SQL).

הפקודה הבאה יוצרת קובץ Script לרענון המטה-נתונים של כל קובץ PDF סרגלי קיים המסומן בתרשים מוטבע:

/*

Generates a script that can be used to refresh all active inlineable scalar UDFs.

Note The sp_refreshsqlmodule command does not affect any permissions, extended properties, or SET options that are associated with the object.

*/

SELECT 'EXECUTE sys.sp_refreshsqlmodule ''[' + OBJECT_SCHEMA_NAME(object_id) + +'].' + '[' + OBJECT_NAME(object_id)

+ ']'';' AS 'RefreshStatement'

FROM sys.sql_modules

WHERE is_inlineable = 1

AND inline_type = 1;

GO

הערה: לאחר שדרוג ל- SQL SERVER 2019 CU5, אנו נחדש את ההפקה האוטומטית של יכולת ההפצה של UDF במהלך ההידור.

פתרון

בעיה זו נפתרה בעדכונים המצטברים הבאים עבור SQL Server:

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

מצב

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

הפניות

למד על המינוח שבו Microsoft משתמשת כדי לתאר עדכוני תוכנה.

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

מעוניין באפשרויות נוספות?

גלה את יתרונות המנוי, עיין בקורסי הדרכה, למד כיצד לאבטח את המכשיר שלך ועוד.

קהילות עוזרות לך לשאול שאלות ולהשיב עליהן, לתת משוב ולשמוע ממומחים בעלי ידע עשיר.

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

עד כמה אתם מרוצים מאיכות השפה?
מה השפיע על החוויה שלך?
בלחיצה על 'שלח', אתה מאפשר למשוב שלך לשפר מוצרים ושירותים של Microsoft. מנהל ה-IT שלך יוכל לאסוף נתונים אלה. הצהרת הפרטיות.

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

×