Построение инструкций в среде выполнения

Изменения: 5 декабря 2005 г.

Большинство приложений Microsoft SQL Server 2005, в которых необходимо динамически построить инструкции SQL в среде выполнения, производят это построение перед тем, как вызвать функцию или метод API базы данных для выполнения инструкции. Например, приложение на языке C, использующее ODBC, может динамически построить и записать одну или несколько инструкций SQL в символьный массив и после этого передать этот массив функциям ODBC SQLPrepare или SQLExecDirect.

Язык Transact-SQL поддерживает два метода построения инструкций SQL во время выполнения в сценариях, хранимых процедурах и триггерах Transact-SQL:

  • Использование системной хранимой процедуры sp_executesql для выполнения строки в Юникоде. Процедура sp_executesql поддерживает подстановку параметров по аналогии с инструкцией RAISERROR.
  • Использование инструкции EXECUTE для выполнения символьной строки. Инструкция EXECUTE не поддерживает подстановку параметров в выполняемой строке.
    ms178115.security(ru-ru,SQL.90).gifПримечание безопасности.
    Использование инструкции EXECUTE для выполнения строки облегчает атаки типа SQL Injection. Вместо этого рекомендуется использовать инструкцию sp_executesql с параметрами.

См. также

Основные понятия

Использование sp_executesql

Другие ресурсы

атака SQL Injection
Хранимая процедура sp_executesql (Transact-SQL)

Справка и поддержка

Получение помощи по SQL Server 2005

Журнал изменений

Версия Журнал

5 декабря 2005 г.

Измененное содержимое:
  • Добавлено примечание безопасности относительно атак SQL Injection.
  • Удален пример кода.