Prihláste sa s kontom Microsoft
Prihláste sa alebo si vytvorte konto.
Dobrý deň,
Vyberte iné konto.
Máte viacero kont
Vyberte konto, s ktorým sa chcete prihlásiť.

Príznaky

User-Defined funkcie (UDF), ktoré sú implementované v transact-SQL a ktoré vracajú jednu hodnotu údajov, sú známe ako skalárne User-Defined funkcie T-SQL (UDF). 

Funkcia škálovania UDF bola zavedená v microsoft SQL Server 2019. Táto funkcia môže zlepšiť výkon dotazov, ktoré vyvolávajú skalárne súbory UDF T-SQL, v ktorých je hlavným kritickým miestom spúšťanie UDF. T-SQL Scalar UDF Inlining automaticky transformuje vnorené súbory UDF na relačné výrazy. 

Táto kumulatívna aktualizácia (CU) obsahuje niekoľko opráv v nasledujúcich oblastiach pre scenáre, v ktorých dotaz, ktorý používa scalar UDF Inlining, môže vrátiť chybové hlásenie alebo neočakávané výsledky:

  • Chyba nezhody typov sa vyskytuje, ak vrátený typ UDF je sql_variant (pridané v SQL Server 2019 CU2).

  • Vyvolanie UDF zsp_executesqlzruší spustenie (pridané v SQL Server 2019 CU2).

  • Súbory UDF, ktoré odkazujú na označenia bez priradeného GOTO príkazu, vrátia nesprávne výsledky (pridané v SQL Server 2019 CU2).

  • Stavy nedostatku pamäte a pretekanie pamäte sa vyskytujú z dôvodu veľmi veľkých skalárnych súborov UDF (pridaných v SQL Server 2019 CU2).

  • Neinicializované premenné, ktoré sa používajú v príkazoch stavu (IF-ELSE) spôsobujú chyby (pridané v SQL Server 2019 CU2).

  • Explicitná chyba konverzie sa vyskytuje, ak má UDF parameter sql_variant(pridaný v SQL Server 2019 CU7).

  • Chyba sa vyskytuje, ak skalárna funkcia odkazuje CHECKSUM(pridané v SQL Server 2019 CU7).

  • Vyvolanie UDF s mnohými skalárnymi prehodnoteniami výrazov môže spôsobiť chybu nenáročného plánovača (pridanú v SQL Server 2019 CU7).

    Poznámka: Oprava tohto problému môže niekedy spôsobiť regresiu výkonu. Ak chcete obmedziť túto regresiu výkonu, môžete pôvodnú opravu vypnúť zapnutím príznaku sledovania (TF) 13156.

    Spoločnosť Microsoft pracuje na oprave tejto regresie výkonu, ktorá bude k dispozícii v budúcej cu.

  • Chyba sa vyskytuje, ak dotaz odkazujúci na UDF používa OPTION (RECOMPILE)(pridané v SQL Server 2019 CU7).

  • Chyby povolení sa vyskytujú, ak zobrazenia vyvolávajú vložené súbory UDF (pridané v SQL Server 2019 CU9).

  • Porušenie prístupu nastane, ak sa použijequery_tsql_scalar_udf_inlinedXEvent (pridané v SQL Server 2019 CU9).

  • Nekonzistentné správanie sa vyskytuje, pretože Scalar UDF Inlining nerešpektuje QUERY_OPTIMIZER_COMPATIBILITY_LEVEL_ntip dotazu (pridané v SQL Server 2019 CU9).

  • Tvorba prehľadu používateľských súborov obsahuje agregácie, ktoré môžu spôsobiť chyby nenáročného plánovača (pridané v SQL Server 2019 CU9).

  • Chyby nedostatku pamäte sa vyskytujú v dôsledku postupnosti skalárnych operácií s rovnakou premennou v podmienených blokoch (pridané v SQL Server 2019 CU9).

  • Po inovácii na CU9 dôjde k porušeniu prístupu, ak objekt vyvolá skalárny vnorený UDF (UDF1), ktorý má skalárny vnorený UDF (UDF2), ktorý sa používa ako vstupný parameter (pridaný v SQL Server 2019 CU11).

  • Tvorba prehľadu UDF môže spôsobiť chyby a generovať kódy chýb 6846, 1011 a 107 (pridané v SQL Server 2019 CU11).

  • Tvorba prehľadu súborov UDF, ktoré sa spúšťajú ako konto iné ako konto sysadmin, môže vrátiť chybové hlásenie: V aktuálnom príkaze sa vyskytla závažná chyba.  Výsledky, ak existujú, by sa mali zahodiť" (pridané v SQL Server 2019 CU16).

  • Porušenie prístupu nastane, ak sa dočasné tabuľky vyvolávajú v UDF pomocou synoným (pridaných v microsoft SQL Server 2022 CU1 a SQL Server 2019 CU19).

  • Porušenie prístupu nastane, ak definícia UDF obsahuje iba označenia GOTO a príkazRETURN (pridaný v SQL Server 2022 CU1 a SQL Server 2019 CU19).

  • Skalárna funkcia UDF vráti výsledky v rôznych formátoch dátumu a času, keď je zapnutá funkcia škálovania UDF (pridaná v SQL Server 2022 CU3 a SQL Server 2019 CU20).

  • Súbor s výpisom sa vygeneruje, ak dotaz s klauzulou GROUP BY používa vložené súbory UDF v príkaze SELECT bez agregovanej funkcie (pridanej v SQL Server 2022 CU12 a SQL Server 2019 CU26).

  • Chyba "Maximálna uložená procedúra, funkcia, spúšťač alebo zobrazenie úrovne vnárania prekročená (limit 32)" sa vyskytuje, ak je zapnutá funkcia škálovania UDF, a to aj v prípade, že úroveň vnárania nie je prekročená (pridaná do SQL Server 2022 CU12 a SQL Server 2019 CU26).

  • Poškodenie pamäte sa vyskytuje v sqllang.dll!CProchdr::FDeriveInlineabilityOfScalarUdf , ak je zapnutá funkcia škálovania UDF (pridaná v SQL Server 2022 CU12 a SQL Server 2019 CU26).

Táto kumulatívna aktualizácia blokuje aj tvorbu prehľadu v nasledujúcich scenároch:

  • Ak UDF odkazuje na určité vnútorné funkcie (napríklad @@ROWCOUNT), ktoré môžu zmeniť výsledky pri zadaní UDF (pridaného v SQL Server 2019 CU2).

  • Pri odovzdávaní agregačných funkcií ako parametrov do skalárneho UDF (pridaného v SQL Server 2019 CU2).

  • Ak UDF odkazuje na vstavané zobrazenia (napríklad: OBJECT_ID) (pridané v SQL Server 2019 CU2).

  • Ak UDF používa metódy XML (pridané v SQL Server 2019 CU4).

  • Ak UDF obsahuje príkaz SELECT, ktorý používa klauzuluORDER BY, ale nie TOP 1(pridané do SQL Server 2019 CU4).

  • Ak príkazSELECT vykoná priradenie spolu s klauzulou ORDER BY (napríklad SELECT @x = @x +1 FROM table ORDER BY column_name) (pridanej do SQL Server 2019 CU4).

  • Ak UDF obsahuje viacero RETURN príkazov (pridaných v SQL Server 2019 CU5).

  • Ak sa UDF volá z príkazu RETURN (pridaného v SQL Server 2019 CU5).

  • Ak UDF odkazuje na funkciu STRING_AGG (pridaná v SQL Server 2019 CU5).

  • Ak definícia UDF odkazuje na vzdialené tabuľky (pridané v SQL Server 2019 CU6).

  • Ak dotaz volajúci UDF používa GROUPING SETS, CUBEalebo ROLLUP (pridané v SQL Server 2019 CU6).

  • Ak dotaz volania UDF obsahuje premennú, ktorá sa používa ako parameter UDF pre priradenie (napríklad SELECT @y=2, @x=UDF(@y)) (pridaná do SQL Server 2019 CU6).

  • Ak UDF odkazuje na šifrované stĺpce (pridané v SQL Server 2019 CU11).

  • Ak UDF obsahuje odkazy na WITH XMLNAMESPACES(pridané v SQL Server 2019 CU11).

  • Ak dotaz vyvolanie UDF má spoločné tabuľkové výrazy (CTE) (pridané v SQL Server 2019 CU11).

  • Ak definícia UDF obsahuje dočasné tabuľky alebo synonymá pre dočasné tabuľky (pridané v SQL Server 2022 CU1 a SQL Server 2019 CU19).

  • Ak definícia UDF obsahuje príkazSELECTspolu s klauzulouDISTINCTpre viaceré stĺpce priradenia (pridané do SQL Server 2022 CU4 a SQL Server 2019 CU20).

  • Ak UDF obsahuje príkaz SELECT , ktorý používa klauzulu TABLESAMPLE PERCENT a priradenia viacerých premenných (pridané do SQL Server 2022 CU7).

  • Ak INSERT dotaz existuje v tabuľke, na ktorú odkazuje indexované zobrazenie obsahujúce UDF (pridané v SQL Server 2022 CU12 a SQL Server 2019 CU26).

Po inovácii na SQL Server 2019 CU2, ale pred inováciou na SQL Server 2019 CU5 by ste mali prehodnotiť, či má UDF nárok na tvorbu zosúlaďovania. Ak to chcete urobiť, obnovte oprávnené skalárne používateľské súbory pomocou niektorého z týchto spôsobov:

  • Spustite sp_refreshsqlmodule pre príslušné skalárne UDF. Ďalšie informácie o tejto systémovej uloženej procedúre nájdete v téme sp_refreshsqlmodule (Transact-SQL).

  • Zmeňte alebo znova vytvorte existujúci skalárny formát UDF pomocou existujúcich definícií, povolení a nastavení vlastností. Ďalšie informácie nájdete v téme ALTER FUNCTION (Transact-SQL).

Nasledujúci príkaz vygeneruje skript na obnovenie metaúdajov existujúcich vložených skalárnych súborov UDF:

/*

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

Poznámka: Po inovácii na SQL Server 2019 CU5 počas kompilácie obnovíme automatické odvodenie vnorenia UDF.

Riešenie

Tento problém je opravený v nasledujúcich kumulatívnych aktualizáciách pre SQL Server:

Každá nová kumulatívna aktualizácia pre SQL Server obsahuje všetky rýchle opravy a všetky opravy zabezpečenia, ktoré boli zahrnuté do predchádzajúcej kumulatívnej aktualizácie. Pozrite si najnovšie kumulatívne aktualizácie pre SQL Server:

Stav

Spoločnosť Microsoft potvrdila, že ide o problém v produktoch spoločnosti Microsoft, ktoré sú uvedené v časti Vzťahuje sa na.

Odkazy

Získajte informácie o terminológii , ktorú spoločnosť Microsoft používa na popis aktualizácií softvéru.

Potrebujete ďalšiu pomoc?

Chcete ďalšie možnosti?

Môžete preskúmať výhody predplatného, prehľadávať školiace kurzy, naučiť sa zabezpečiť svoje zariadenie a ešte oveľa viac.

Komunity pomôžu s kladením otázok a odpovedaním na ne, s poskytovaním pripomienok a so získavaním informácií od odborníkov s bohatými znalosťami.

Boli tieto informácie užitočné?

Aká je podľa vás jazyková kvalita textu?
Čo sa vám páčilo, prípadne čo nie?
Stlačením tlačidla Odoslať sa vaše pripomienky použijú na zlepšenie produktov a služieb spoločnosti Microsoft. Váš správca IT bude môcť tieto údaje zhromažďovať. Vyhlásenie o ochrane osobných údajov.

Ďakujeme za vaše pripomienky!

×