拡張ストアド プロシージャ
重要 : |
---|
この機能は、将来のバージョンの 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 インジェクション」を参照してください。
参照
その他の技術情報
SQL Server への拡張ストアド プロシージャの追加
拡張ストアド プロシージャの作成
CLR (共通言語ランタイム) 統合の概要