Поделиться через


Динамический SQL для выделенных SQL пулов в Azure Synapse Analytics

В этой статье приведены советы по разработке решений, использующих динамический SQL в выделенных пулах SQL.

Пример динамического SQL

При разработке кода приложения для выделенных пулов SQL может потребоваться использовать динамический SQL для предоставления гибких, универсальных и модульных решений. Выделенные пулы SQL в настоящее время не поддерживают тип данных BLOB.

Не поддерживающие типы данных BLOB-объектов могут ограничить размер строк, так как типы данных BLOB-объектов включают в себя типы varchar(max) и nvarchar(max).

Если вы использовали эти типы в коде приложения для создания больших строк, необходимо разбить код на блоки и использовать инструкцию EXEC.

Простой пример:

DECLARE @sql_fragment1 VARCHAR(8000)=' SELECT name '
,       @sql_fragment2 VARCHAR(8000)=' FROM sys.system_views '
,       @sql_fragment3 VARCHAR(8000)=' WHERE name like ''%table%''';

EXEC( @sql_fragment1 + @sql_fragment2 + @sql_fragment3);

Если строка коротка, можно использовать sp_executesql как обычно.

Примечание.

Инструкции, выполняемые как динамический SQL, по-прежнему будут подчиняться всем правилам проверки T-SQL.

Дальнейшие действия

Дополнительные советы по разработке приведены в обзоре разработки.