KB4538581 – корекция: скаларни проблеми с подравняването на СДС в SQL Server 2019

Симптоми

User-Defined функции (ФГР), които се изпълняват в транзакция-SQL и връща една стойност на данните, са известни като T-SQL скаларни функции за User-Defined (ФГР). 

Microsoft SQL Server 2019 представи скаларната функция за подравняване на СДС, която може да подобри ефективността на заявките, които се позовават на T-SQL скаларни ФГР, в който изпълнението на СДС е основната пречка. За да подчертаете T-SQL скаларни СДС, автоматично трансформиране на ФГР в релационни изрази. 
 

Тази сборна актуализация включва няколко корекции в следните области за сценарии, в които една заявка, която използва скаларни СДС, може да върне съобщение за грешка или неочаквани резултати:

  • Грешка при въвеждане на несъответствие, ако Върнатият тип на СДС е sql_variant (добавен в Microsoft SQL Server 2019 CU2)

  • СДС извикване от sp_executesql прекъсване на изпълнението (добавен в Microsoft SQL Server 2019 CU2)

  • ФГР препращане на етикети без асоциирана команда "ГОТО" връща неправилни резултати (добавени в Microsoft SQL Server 2019 CU2)

  • Условията за недостиг на памет и изтичане на памет възникват поради много големи скаларни ФГР (добавени в Microsoft SQL Server 2019 CU2)

  • Неинициализираните променливи, използвани в "условие" (IF-ELSE), причиняват грешки (добавени в Microsoft SQL Server 2019 CU2)

  • Грешка при преобразуване на изричен текст, ако СДС има SQL_VARIANT параметър (добавен в Microsoft SQL Server 2019 CU7)

  • Възникнала грешка при препратки към скаларни функции (добавена в Microsoft SQL Server 2019 CU7)

  • Извикването на СДС с голям брой на преоценките за скаларни изрази може да доведе до негенерираща грешка на планировчика (добавен в Microsoft SQL Server 2019 CU7)

  • Възникнала грешка, когато заявката за съпоставяне на СДС използва ОПЦИЯТА (КОМПИЛИРАне) (добавен в Microsoft SQL Server 2019 CU7)

  • Грешки за разрешения, повдигнати, когато изгледите се обръщат към вмъкнати ФГР (добавени в Microsoft SQL Server 2019 CU9)

  • Нарушения на достъпа, възникнали при използването на XEvent query_tsql_scalar_udf_inlined (добавен в Microsoft SQL Server 2019 CU9) 

  • Несъгласувано поведение, дължащо се на скаларното подравняване на СДС, не зачитащо подсещането за "QUERY_OPTIMIZER_COMPATIBILITY_LEVEL_n" (добавено в Microsoft SQL Server 2019 CU9)

  • ФГР за подравняване съдържат агрегирания, които биха могли да доведат до негенерираща грешка на планировчика (добавена в Microsoft SQL Server 2019 CU9) 

  • Недостиг на грешки в паметта поради поредица от скаларни операции на една и съща променлива в условни блокове (добавен в Microsoft SQL Server 2019 CU9)

Тази сборна актуализация блокира и в следните сценарии:

  • Ако СДС препраща към определени присъщи функции (например @ @ROWCOUNT), които могат да променят резултата, когато са вмъкнати (добавени в Microsoft SQL Server 2019 CU2)

  • Когато обединените функции преминават като параметри към скаларни СДС (добавени в Microsoft SQL Server 2019 CU2)

  • Ако в СДС препратките вградени изгледи (например: OBJECT_ID) (добавен в Microsoft SQL Server 2019 CU2)

  • Ако СДС използва XML методите (добавени в Microsoft SQL Server 2019 CU4)

  • Ако СДС съдържа "избор с поръчка", като без "Топ 1" (добавен в Microsoft SQL Server 2019 CU4)

  • Ако заявката за ИЗБИРАНЕ извършва задача заедно с клаузата ORDER BY (например изберете @x = @x + 1 от реда на таблицата по column_name) (добавен в Microsoft SQL Server 2019 CU4)

  • Ако СДС съдържа множество декларации за РЕКЛАМАЦИя (добавени в Microsoft SQL Server 2019 CU5)

  • Ако СДС бъде извикван от отчет за ВРЪЩАния (добавен в Microsoft SQL Server 2019 CU5)

  • Ако СДС препраща към STRING_AGG функция (добавен в Microsoft SQL Server 2019 CU5)

  • Ако дефиницията на СДС препраща към отдалечени таблици (добавени в Microsoft SQL Server 2019 CU6)

  • Ако заявката за обаждане на СДС използва НАБОРи от ГРУПИРАния, КУБ или СБОР (добавен в Microsoft SQL Server 2019 CU6)

  • Ако заявката за обаждане на СДС съдържа променлива, която се използва като СДС параметър за възложена задача (например изберете @y = 2; @x = СДС (@y)) (добавен в Microsoft SQL Server 2019 CU6)

След като надстроите до Microsoft SQL Server 2019 CU2, но преди да надстроите до CU5, трябва да преоцените дали на СДС отговарят на условията за подравняване. За да направите това, можете да обновите допустимите скаларни ФГР по един от следните начини:

  • Изпълнете sp_refreshsqlmodule за приложими скаларни ФГР (вижте sp_refreshsqlmodule (преговаряй SQL) за подробности относно тази съхранена в системата процедура)

  • Промяна или повторно създаване на съществуващите скаларни СДС чрез използване на съществуващо дефиниране, разрешения и набори от свойства (вижте функция алтер (преговаряне – SQL))

Следващият скрипт генерира скрипт за обновяване на метаданните за съществуващите вмъкнати скаларни ФГР:
 

/*

Генерира скрипт, който може да се използва за обновяване на всички активни вградени скаларни ФГР.


Забележка Командата sp_refreshsqlmodule не влияе върху разрешенията, разширените свойства,

или ЗАДАЙТЕ опциите, които са свързани с обекта.

*/

ИЗБЕРЕТЕ "изпълнение на sys.sp_refreshsqlmodule ' ' [' + OBJECT_SCHEMA_NAME (object_id) + +" object_id OBJECT_NAME]

+ ']'';' КАТО "RefreshStatement"

ОТ sys.sql_modules

КЪДЕТО is_inlineable = 1

И inline_type = 1;

ОТИДЕТЕ

Забележка След като надстроите до Microsoft SQL Server 2019 CU5, ние автоматично ще извлечем СДС по време на компилацията.

Състоянието

Microsoft потвърди, че това е проблем в продуктите на Microsoft, които са посочени в секцията "важи за".

Решение

Този проблем е коригиран в следната сборна актуализация за SQL Server:

Всяка нова сборна актуализация за SQL Server съдържа всички поправки и всички корекции на защитата, които са били включени в предишната сборна актуализация. Вижте последните сборни актуализации за SQL Server:

Препратки

Научете повече за терминологията , която Microsoft използва, за да опише софтуерни актуализации.

Нуждаете се от още помощ?

Разширете уменията си
Преглед на обучението
Получавайте първи новите функции
Присъединете се към Microsoft приобщени

Беше ли полезна тази информация?

Благодарим ви за обратната връзка!

Благодарим ви за вашата обратна връзка. Изглежда, че ще бъде полезно да ви свържем с един от нашите агенти по поддръжката на Office.

×