Dynamic SQL — это SQL-код, который конструируется и выполняется во время выполнения программы, а не определяется полностью и компилируется заранее. Это позволяет запросам адаптироваться на основе переменных, пользовательского ввода или логики приложения, которые известны только во время работы программы.
Простой пример:
DECLARE @sql NVARCHAR(MAX)
SET @sql = 'SELECT * FROM ' + @tableName
EXEC sp_executesql @sql
Самый критичный риск — это SQL injection, который возникает, когда неочищенный пользовательский ввод конкатенируется прямо в строку запроса. Злоумышленник может манипулировать вводом, чтобы выполнить вредоносные команды.
Всегда используй параметризованные запросы (например, sp_executesql с параметрами), а не прямую конкатенацию строк, чтобы снизить этот риск.
sp_executesql с именованными параметрами, чтобы задействовать переиспользование плана и предотвратить injectionDynamic SQL конструируется во время выполнения и может адаптироваться на основе переменных или пользовательского ввода, который неизвестен при старте приложения, в отличие от static SQL, который полностью определён и скомпилирован заранее.
Новый — ещё не проверен сообществом
Вы