Prijavite se pomoću Microsofta
Prijavi se ili izradi račun.
Zdravo,
Odaberite drugi račun.
Imate više računa
Odaberite račun putem kojeg se želite prijaviti.

Simptomi

User-Defined (UDFs) implementirane u Transact-SQL i koje vraćaju jednu vrijednost podataka nazivaju se T-SQL Scalar User-Defined Functions (UDFs). 

Značajka UDF inlining Scalar uvedena je u microsoft SQL Server 2019. Ta značajka može poboljšati performanse upita koji pozivaju T-SQL Scalar UDF-ove u kojima je izvršavanje UDF-a glavno usko grlo. T-SQL Scalar UDF Inlining automatski pretvara nelinearne UDF-ove u relacijske izraze. 

Ovo kumulativno ažuriranje (CU) obuhvaća nekoliko popravaka u sljedećim područjima za scenarije u kojima upit koji koristi Scalar UDF inlining može vratiti poruku o pogrešci ili neočekivane rezultate:

  • Pogreška nepodudaranje vrsta pojavljuje se ako je vrsta povrata UDF-a sql_variant (dodana u SQL Server 2019 CU2).

  • UDF pozivanje izsp_executesqlponištava izvršavanje (dodano u SQL Server 2019 CU2).

  • UDFs koji referencira oznake bez pridružene GOTO vraćaju netočne rezultate (dodane u SQL Server 2019 CU2).

  • Uvjeti nedostatka memorije i curenja memorije pojavljuju se zbog vrlo velikih ljuskastih UDFs-ova (dodanih u SQL Server 2019. CU2).

  • Neinicijalizirane varijable koje se koriste u naredbama uvjeta (IF-ELSE) uzrokuju pogreške (dodane u SQL Server 2019. CU2).

  • Eksplicitna pogreška pretvorbe pojavljuje se ako UDF sql_variantparametar (dodan u SQL Server 2019 CU7).

  • Pogreška se pojavljuje ako se funkcija CHECKSUM(dodana u SQL Server 2019 CU7).

  • Pozivanje UDF-a s brojnim ponovnim procjenama skaliranja izraza može uzrokovati pogrešku planera koji ne daje dobit (dodana u SQL Server 2019. CU7).

    Napomena: rješenje tog problema ponekad može uzrokovati regresij performansi. Da biste ublažili regresij performansi, možete onemogućiti izvorni popravak uključivanjem zastavice praćenja (TF) 13156.

    Microsoft radi na rješenju tog regresije performansi koja će biti dostupna u budućem cu.

  • Pogreška se pojavljuje ako UDF referenciranje upita koristi OPTION (RECOMPILE)(dodano u SQL Server 2019 CU7).

  • Pogreške dozvola pojavljuju se ako se prikazi pozivaju na ucrtane UDFs -ove (dodane u SQL Server 2019 CU9).

  • Do kršenja prava pristupa dolaziquery_tsql_scalar_udf_inlinedXEvent (dodan u SQL Server 2019 CU9).

  • Dolazi do nedosljednog ponašanja jer Scalar UDF Inlining ne poštuje QUERY_OPTIMIZER_COMPATIBILITY_LEVEL_npodsjetnik za upit (dodan u SQL Server 2019 CU9).

  • Strukturiranje UDF-ova sadrži agregacije koje mogu uzrokovati pogreške planera koji ne rezultiraju prinosima (dodane u SQL Server 2019. CU9).

  • Pogreške koje nisu u memoriji pojavljuju se zbog niza skalarnih operacija na istoj varijabli u uvjetnim blokovima (dodano u SQL Server 2019. CU9).

  • Nakon nadogradnje na CU9 dolazi do kršenja prava pristupa ako objekt pozove skalarni nelinearni UDF (UDF1) koji ima skalarni nelinearni UDF (UDF2) koji se koristi kao ulazni parametar (dodan u SQL Server 2019 CU11).

  • Strukturiranje UDFs-ova može uzrokovati pogreške i generirati kodove pogrešaka 6846, 1011 i 107 (dodano u SQL Server 2019 CU11).

  • Ulining UDFs that run as the non-sysadmin account might return the error message, "A severe error occurred on the current command.  Rezultate, ako postoje, treba odbaciti" (dodano u SQL Server 2019. CU16).

  • Do kršenja prava pristupa dolazi ako se privremene tablice pozivaju unutar UDFs-ova pomoću sinonima (dodanih u Microsoft SQL Server 2022 CU1 i SQL Server 2019 CU19).

  • Do kršenja prava pristupa dolazi ako definicija UDF-a sadrži samo GOTO oznake iRETURN naredbu (dodanu u SQL Server 2022 CU1 i SQL Server 2019 CU19).

  • Scalar UDF vraća rezultate u različitim oblicima datuma i vremena kada je uključena značajka UDF inliniranja Scalar (dodana u SQL Server 2022 CU3 i SQL Server 2019 CU20).

  • Datoteka izvatka generira se ako upit koji sadrži uvjet GROUP BY koristi ucrtane UDFs-ove u SELECT naredbi bez agregacijske funkcije (dodane u SQL Server 2022 CU12 i SQL Server 2019 CU26).

  • Pogreška "Prekoračeno je maksimalno pohranjena procedura, funkcija, okidač ili prikaz razine gniježđenja (ograničenje 32)" ako je uključena značajka UDF inliniranja Scalar, čak i ako razina gniježđenja nije premašena (dodana u SQL Server 2022 CU12 i SQL Server 2019 CU26).

  • Oštećenje memorije pojavljuje se u programu sqllang.dll!CProchdr::FDeriveInlineabilityOfScalarUdf ako je uključena značajka UDF inliniranja Scalar (dodana u SQL Server 2022 CU12 i SQL Server 2019 CU26).

Kumulativno ažuriranje blokira i strukturiranje u sljedećim scenarijima:

  • Ako se UDF poziva na određene intrinzne funkcije (na primjer, @@ROWCOUNT) koje mogu izmijeniti rezultate kada je UDF ucrtan (dodan u SQL Server 2019. CU2).

  • Kada se agregacijske funkcije prosljeđuju kao parametri u skalarni UDF (dodan u SQL Server 2019.CU2).

  • Ako UDF referencira ugrađene prikaze (na primjer: OBJECT_ID) (dodano u SQL Server 2019. CU2).

  • Ako UDF koristi XML metode (dodano u SQL Server 2019 CU4).

  • Ako UDF sadrži SELECTkoja koristi uvjetORDER BY, ali ne i TOP 1(dodan u SQL Server 2019 CU4).

  • AkoSELECT izvodi zadatak zajedno s ORDER BY (na primjer, SELECT @x = @x +1 FROM table ORDER BY column_name) (dodano u SQL Server 2019. CU4).

  • Ako UDF sadrži više RETURN (dodano u SQL Server 2019. CU5).

  • Ako se UDF poziva iz naredbe RETURN (dodan u SQL Server 2019 CU5).

  • Ako UDF referencira funkciju STRING_AGG (dodano u SQL Server 2019. CU5).

  • Ako definicija UDF-a upućuje na udaljene tablice (dodano u SQL Server 2019. CU6).

  • Ako upit za pozivanje UDF-a koristi GROUPING SETS, CUBEili ROLLUP (dodan u SQL Server 2019. CU6).

  • Ako upit za pozivanje UDF-a sadrži varijablu koja se koristi kao parametar UDF za dodjelu (na primjer, SELECT @y=2, @x=UDF(@y)) (dodano u SQL Server 2019. CU6).

  • Ako UDF referencira šifrirane stupce (dodano u SQL Server 2019. CU11).

  • Ako UDF sadrži reference na WITH XMLNAMESPACES(dodano u SQL Server 2019. CU11).

  • Ako upit koji poziva UDF ima izraze uobičajene tablice (CTE) (dodane u SQL Server 2019.CU11).

  • Ako definicija UDF-a sadrži privremene tablice ili sinonime za privremene tablice (dodano u SQL Server 2022 CU1 i SQL Server 2019 CU19).

  • Ako definicija UDF-a sadržiSELECTuz uvjetDISTINCTna više stupaca zadataka (dodan u SQL Server 2022 CU4 i SQL Server 2019 CU20).

  • Ako UDF sadrži SELECT koja koristi uvjet TABLESAMPLE PERCENT i višestruke dodjele varijabli (dodano u SQL Server 2022 CU7).

  • Ako upit INSERT postoji u tablici na koju se poziva indeksirani prikaz koji sadrži UDF (dodan u SQL Server 2022 CU12 i SQL Server 2019 CU26).

Nakon nadogradnje na SQL Server 2019 CU2, ali prije nadogradnje na SQL Server 2019 CU5 trebali biste ponovno procijeniti ispunjava li UDF uvjete za strukturiranje. Da biste to učinili, osvježite kvalificirane skalirane UDFs-ove na jedan od sljedećih načina:

  • Pokrenite sp_refreshsqlmodule za primjenjive skalarni UDFs. Dodatne informacije o pohranjenoj proceduri sustava potražite u članku sp_refreshsqlmodule (Transact-SQL).

  • Izmijenite ili ponovno stvorite postojeći skalarni UDF pomoću postojećih definicija, dozvola i postavite svojstva. Dodatne informacije potražite u članku ALTER FUNCTION (Transact-SQL).

Sljedeća naredba generira skriptu za osvježavanje metapodataka postojećih umetnutih skalarnih UDFs-ova:

/*

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

Napomena: nakon nadogradnje na SQL Server 2019 CU5 nastavit ćemo automatski izvesti UDF nelineabilnost tijekom sastavljanja.

Rješenje

Taj je problem riješen u sljedećim kumulativnim ažuriranjima za SQL Server:

Svako novo kumulativno ažuriranje za SQL Server sadrži sve hitne popravke i sve sigurnosne popravke koji su obuhvaćeni prethodnim kumulativnim ažuriranjem. Pogledajte najnovija kumulativna ažuriranja za SQL Server:

Status

Microsoft je potvrdio da je to problem u Microsoftovim proizvodima koji su navedeni u odjeljku "Odnosi se na".

Reference

Informirajte se o terminologiji koju Microsoft koristi za opisivanje softverskih ažuriranja.

Potrebna vam je dodatna pomoć?

Želite dodatne mogućnosti?

Istražite pogodnosti pretplate, pregledajte tečajeve za obuku, saznajte kako zaštititi uređaj i još mnogo toga.

Zajednice vam pomažu da postavljate pitanja i odgovarate na njih, pošaljete povratne informacije i čujete se sa stručnjacima s bogatim znanjem.

Jesu li vam ove informacije bile korisne?

Koliko ste zadovoljni jezičnom kvalitetom?
Što je utjecalo na vaše iskustvo?
Ako pritisnete Pošalji, vaše će se povratne informacije iskoristiti za poboljšanje Microsoftovih proizvoda i usluga. Vaš će IT administrator moći prikupiti te podatke. Izjava o zaštiti privatnosti.

Hvala vam na povratnim informacijama!

×