次の方法で共有


実行時のステートメントの構築

更新 : 2005 年 12 月 5 日

実行時に SQL ステートメントを動的に構築する必要があるほとんどの Microsoft SQL Server 2005 アプリケーションは、そのステートメントを実行するデータベース API 関数またはメソッドを呼び出される前に SQL ステートメントを構築します。たとえば、ODBC を使用する C 言語のアプリケーションでは、1 つ以上の SQL ステートメントを 1 つの文字配列に動的に構築し、その配列を ODBC の SQLPrepare 関数または SQLExecDirect 関数に渡すことができます。

Transact-SQL では、実行時に Transact-SQL スクリプト、ストアド プロシージャ、およびトリガ内で SQL ステートメントを構築する次の方法がサポートされています。

  • Unicode 文字列の実行には、sp_executesql システム ストアド プロシージャを使用します。sp_executesql では、RAISERROR ステートメントと同様のパラメータ置換がサポートされます。
  • 文字列の実行には、EXECUTE ステートメントを使用します。EXECUTE ステートメントでは、実行された文字列でパラメータ置換がサポートされません。
    ms178115.security(ja-jp,SQL.90).gifセキュリティ メモ :
    EXECUTE ステートメントを使用して文字列を実行すると、SQL インジェクション攻撃が容易になります。代わりにパラメータを指定して sp_executesql を使用することをお勧めします。

参照

概念

sp_executesql の使用

その他の技術情報

SQL インジェクション
sp_executesql (Transact-SQL)

ヘルプおよび情報

SQL Server 2005 の参考資料の入手

変更履歴

リリース 履歴

2005 年 12 月 5 日

変更内容 :
  • SQL インジェクション攻撃に関するセキュリティに関する注を挿入しました。
  • コード例を削除しました。