Share via


SQL プログラミング機能の Web への公開

この機能は、将来のバージョンの Microsoft SQL Server では削除される予定です。新しい開発作業では、この機能の使用を避け、現在この機能を使用しているアプリケーションは修正するようにしてください。

HTTP SOAP エンドポイントを作成または更新するときに、任意のストアド プロシージャやユーザー定義関数を選択して Web メソッドとして公開できます。公開される Web メソッドは、適切な Transact-SQL ステートメント (ストアド プロシージャの場合は CREATE PROCEDURE、ユーザー定義関数の場合は CREATE FUNCTION) を使用して既に作成されている既存のストアド プロシージャまたはユーザー定義関数で、HTTP SOAP エンドポイント経由で Web アクセスが可能なように定義されているものです。

ストアド プロシージャやユーザー定義関数をサーバー上に作成してから、CREATE ENDPOINT または ALTER ENDPOINT のエンドポイント DDL ステートメントを使用して、Web メソッドとして公開できます。

注意

テーブル値を返すユーザー定義関数はサポートされていません。

パラメータの名前付けガイドラインと Web メソッドの制限事項

ユーザー定義関数およびストアド プロシージャで使用するパラメータには、SQL Server の名前付け規則に従って適切な形式の名前を付ける必要があります。詳細については、「オブジェクト名としての識別子の使用」および「パラメータ名の指定」を参照してください。

ユーザー定義関数やストアド プロシージャの名前に、非推奨になった一部の名前付け規則を使用できることがありますが、このような関数名やプロシージャ名はネイティブ XML Web サービス アクセスには使用できません。SQL Server パラメータの名前付け規則で認められていても、非推奨で、ユーザー定義関数やストアド プロシージャを Web メソッドとして公開する場合は使用できないパラメータ名には、次のものがあります。

@

@@

@@this_is_not_a_global

ネイティブ XML Web サービス アクセスを利用して公開できるようにするには、このような非推奨のパラメータ名を変更して、公開を求められたプロシージャや関数で @param 形式の標準名が付けられたパラメータ名を使用できるようにする必要があります。

システム ストアド プロシージャの公開

SQL Server では、システム ストアド プロシージャを使用して、いくつかの情報操作や管理操作を実行できます。場合によっては、これらのプロシージャを HTTP エンドポイント経由でアクセスできる Web サービス メソッドとして公開することがあります。

システム ストアド プロシージャはすべて、システム リソース データベースに格納されていますが、システム ストアド プロシージャの中には、サーバーが生成した WSDL (Web サービス記述言語) 応答を受け付け、正しいスキーマを公開するメタデータ情報がないものもあります。このため、HTTP エンドポイント上で公開された場合、一部のシステム ストアド プロシージャは想定どおりに動作しないことがあります。

システム ストアド プロシージャをユーザー独自のカスタム SQL Server 管理ソリューションの一部として公開する場合は、代わりに次のような方法を使用できます。次の方法では、特定のシステム ストアド プロシージャを使用できないという状況が回避されます。

  • 再帰的ではない単純なシステム ストアド プロシージャの場合は、HTTP エンドポイントで公開するシステム ストアド プロシージャをラップする、ユーザー独自のユーザー定義システム ストアド プロシージャを作成します。

  • 前の方法では複数のストアド プロシージャの呼び出しが入れ子になるので、複雑で扱いにくい場合は、sqlbatch メソッドを使用した回避策を検討します。sqlbatch の使用例については、「SOAP 要求メッセージの構造」を参照してください。