重要 |
|---|
この機能は、Microsoft SQL Server の将来のバージョンで削除されます。新規の開発作業ではこの機能を使用しないようにし、現在この機能を使用しているアプリケーションはできるだけ早く修正してください。代わりに、CLR 統合を使用してください。 |
拡張ストアド プロシージャの実行には次の 3 つの特性があります。
拡張ストアド プロシージャ関数は Microsoft SQL Server のセキュリティ コンテキストで実行されます。
拡張ストアド プロシージャ関数は SQL Server の処理領域で実行されます。
拡張ストアド プロシージャの実行に関連付けられているスレッドは、クライアント接続に使用するスレッドと同じです。
セキュリティに関する注意システム管理者は、拡張ストアド プロシージャをサーバーに追加し、他のユーザーに実行権限を許可する前に、各拡張ストアド プロシージャに有害なコードや悪意のあるコードが含まれていないことを十分に確認する必要があります。
拡張ストアド プロシージャ DLL をロードすると、SQL Server が停止するか、または DBCC DLL_name (FREE) を使用して管理者により明示的にアンロードされるまで、その DLL はサーバーのアドレス領域にロードされた状態を維持します。
EXECUTE ステートメントを使用すると、拡張ストアド プロシージャをストアド プロシージャとして Transact-SQL から実行できます。
EXECUTE @retval = xp_extendedProcName @param1, @param2 OUTPUT
パラメーター
@ retval
戻り値です。@ param1
入力パラメーターです。@ param2
入力/出力パラメーターです。
注意拡張ストアド プロシージャを使用すると、パフォーマンスの向上や、SQL Server の機能強化を図ることができます。 ただし、拡張ストアド プロシージャ DLL と SQL Server は同じアドレス領域を共有するため、問題のあるプロシージャにより SQL Server の機能が影響を受けることがあります。 拡張ストアド プロシージャ DLL によってスローされる例外は SQL Server で処理されますが、SQL Server のデータ領域に損傷を与える可能性があります。 セキュリティ措置として、SQL Server に拡張ストアド プロシージャを組み込むことができるのは SQL Server システム管理者だけに限定されています。 これらのプロシージャは詳細にテストしてからインストールする必要があります。