拡張ストアド プロシージャ

重要な注意事項重要

この機能は、将来のバージョンの Microsoft SQL Server では削除される予定です。新しい開発作業では、この機能の使用を避け、現在この機能を使用しているアプリケーションは修正するようにしてください。代わりに、CLR (共通言語ランタイム) 統合を使用してください。

拡張ストアド プロシージャを使用すると、C などのプログラミング言語を使用してユーザー独自の外部ルーチンを作成できます。拡張ストアド プロシージャは、ユーザーには通常のストアド プロシージャのように見え、通常のストアド プロシージャと同じように実行されます。拡張ストアド プロシージャにはパラメータを渡すことができ、拡張ストアド プロシージャは結果や状態を返すことができます。

拡張ストアド プロシージャは、SQL Server のインスタンスが動的に読み込んで実行できる DLL です。拡張ストアド プロシージャは、SQL Server 拡張ストアド プロシージャ API を使用してプログラミングし、SQL Server のインスタンスのアドレス空間で直接実行します。

注意

Microsoft .NET Framework 共通言語ランタイムのインスタンス化、およびマネージ コードの実行には、拡張ストアド プロシージャを使用しないでください。このシナリオは、今後のバージョンの SQL Server ではサポートされなくなる予定です。CLR 統合は、拡張ストアド プロシージャを記述するための代替手段として、さらに優れた堅牢性および安全性を提供します。

sysadmin 固定サーバー ロールのメンバは、拡張ストアド プロシージャの作成後、SQL Server のインスタンスに拡張ストアド プロシージャを登録して、拡張ストアド プロシージャを実行する権限を他のユーザーに許可できます。拡張ストアド プロシージャは、master データベースにのみ追加できます。

注意

拡張ストアド プロシージャはメモリ リークなど、サーバーのパフォーマンスや信頼性を低下させるような問題を引き起こす可能性があります。参照データを含んでいる SQL Server のインスタンスとは別のインスタンスに拡張ストアド プロシージャを格納することを検討してください。また、データベースへのアクセスには分散クエリを使用することも検討してください。詳細については、「分散クエリ」を参照してください。

セキュリティ

システム管理者は、拡張ストアド プロシージャをサーバーに追加し、他のユーザーに実行権限を許可する前に、各拡張ストアド プロシージャに有害なコードや悪意のあるコードが含まれていないことを十分に確認する必要があります。

セキュリティ ガイドラインとして、次の項目も参考にしてください。

  • すべてのユーザー入力を検証します。

  • ユーザー入力は検証するまで連結しないでください。

  • 検証していないユーザー入力から作成したコマンドを実行しないでください。詳細については、「SQL インジェクション」を参照してください。