次の方法で共有


カスタム WSDL アプリケーションの使用

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

カスタム WSDL ジェネレータ サンプル アプリケーションをセットアップするには、次の作業を実行する必要があります。

  • 特定の WSDL をサポートするカスタム WSDL ハンドラ アプリケーションを作成します。

    この作業を完了するには、「カスタム WSDL アプリケーションのビルド」を参照してください。

  • カスタム WSDL ハンドラを登録および使用できるように SQL Server のインストールを構成します。

この作業には、SQL Server のインストールに対して次の変更を実行する配置スクリプトの作成も含まれます。

  • カスタム WSDL アセンブリ (CustomWSDL.dll) をサーバーに追加し、ADD ASSEMBLY ステートメントで使用できるように登録します。

  • カスタム WSDL ハンドラ アプリケーションが正常に機能するために必要な追加のストアド プロシージャを作成します。

  • SQL Server のインスタンスで、HTTP エンドポイントを作成または変更して、このエンドポイントがカスタム WSDL ハンドラを使用し、既定または単純な WSDL 応答ではなくカスタム WSDL 応答を返すようにします。

カスタム WSDL ハンドラの配置

次の手順は、SQL Server を実行しているコンピュータにローカル管理者としてログインしているか、または管理者特権を使用してリモートからこのコンピュータにアクセスできることを前提としています。

作業 1: サーバーの構成

  1. SQL Server Management Studio で、[新しいクエリ] をクリックしてサーバーに接続します。

  2. 次の Transact-SQL スクリプトをクエリ ウィンドウにコピーします。

    USE master 
    GO
    
    -- Drop myWSDL procedure if it exists.
    IF (SELECT count(*) FROM sysobjects WHERE name = 'myWSDL') = 1 
    DROP PROCEDURE myWSDL
    GO
    
    -- Drop CustomWSDL assembly if it exists.
    DROP ASSEMBLY CustomWSDL
    GO
    
    -- Update the path to the compiled assembly as necessary.
    CREATE ASSEMBLY CustomWSDL FROM 'C:\temp\CustomWSDL.dll'
    GO 
    
    -- Create a stored procedure to map to the common lanugage
    -- runtime (CLR) method As with any other SQL Server stored procedure
    -- that maps to a CLR method, the actual stored procedure name 
    -- ('myWSDL') can be arbitrarily specified.
    CREATE PROCEDURE myWSDL
    (
    @endpointID as int,
    @isSSL as bit,
    @host as nvarchar(256),
    @queryString as nvarchar(256),
    @userAgent as nvarchar(256)
    )
    AS EXTERNAL NAME CustomWSDL.[MSSql.CustomWSDL].GenerateWSDL
    GO
    
    -- Follow the security guidelines set up for your environment.
    -- The following example is meant to be used for development or 
    -- testing purposes only.
    GRANT EXEC on myWSDL to [PUBLIC]
    GO
    
    -- The following is a sample stored procedure (InOut) that
    -- demonstrates the configuration of an HTTP endpoint. 
    -- If the InOut stored procedure already exists, it is dropped.
    IF (SELECT count(*) FROM sysobjects WHERE name = 'InOut') = 1 DROP PROC InOut
    GO
    
    CREATE PROC InOut
             @InParam int,
             @OutParam nvarchar(100) output
    AS
    SELECT * FROM syslanguages WHERE langid = @InParam
    SELECT @OutParam = [name] FROM syslanguages WHERE langid = @InParam
    PRINT @OutParam
    SELECT * FROM syslanguages WHERE langid = @InParam FOR XML raw, XMLSCHEMA
    RETURN 1
    GO
    GRANT EXEC on InOut to [PUBLIC]
    
    -- The following creates a sample HTTP endpoint to demonstrate 
    -- the endpoint setup. If the sample endpoint already exists, it
    -- is first dropped.
    IF (SELECT count(*) FROM [msdb].sys.http_endpoints WHERE name = 'sql_endpoint') = 1
    DROP ENDPOINT sql_endpoint
    GO
    
    CREATE ENDPOINT sql_endpoint
             STATE=STARTED
    AS HTTP (
             SITE='*',
             PATH='/sql/WSDL',
             PORTS=(CLEAR),
             CLEAR_PORT=80,
             AUTHENTICATION=(DIGEST, INTEGRATED)
    )
    FOR SOAP
    (
             WEBMETHOD 'http://myNS.com/'.'InOut' ( NAME='master.dbo.InOut' ),
             DATABASE = 'master',
             WSDL='master.dbo.myWSDL',
             Batches=enabled,
             SCHEMA = STANDARD
    )
    
    GRANT CONNECT ON ENDPOINT::sql_endpoint to [PUBLIC]
    
  3. スクリプトを実行します。

作業 2: ハンドラのテスト

カスタム WSDL ハンドラが正しく動作することを確認するには、変更した URL クエリ文字列を使用して、カスタム WSDL の要求を試行します。たとえば、MyServer という名前の SQL Server のインスタンスに接続し、上記のスクリプトを使用する場合、sql/WSDL のサーバーで確立されたエンドポイントのパスがスクリプトに含まれている必要があります。このエンドポイントでは、カスタム WSDL ハンドラを使用して応答が行われます。したがって、このエンドポイントへの接続をテストし、カスタム WSDL 要求を提供するには、HTTP Web ブラウザ クライアントで次のような URL を使用します。

http://MyServer/sql/WSDL?wsdlargument

argument の値には、さまざまな種類の各クライアントと WSDL に使用される文字列をサポートする、次のいずれかのカスタム WSDL 識別子を使用できます。

カスタム WSDL URL

説明

everett

Visual Studio 2003 開発ツールを使用して開発された単純な Web クライアント向け。

jbuilder

Borland JBuilder 9.0 開発ツールを使用して開発された単純な Web クライアント向け。

glue

webMethods Glue 5.0.1 開発ツールを使用して開発された単純な Web クライアント向け。

次の表に示すように、これら 3 つのいずれを選択した場合でも、<argument> の値によって返されるのは単純な WSDL (すべての XSD ネイティブ型) です。完全な拡張 WSDL を必要とする場合は、クエリの引数の文字列に extended を追加します。

単純な WSDL 識別子

拡張 WSDL 識別子

http://MyServer/sql/WSDL?wsdleverett

http://MyServer/sql/WSDL?wsdleverettextended

http://MyServer/sql/WSDL?wsdljbuilder

http://MyServer/sql/WSDL?wsdljbuilderextended

http://MyServer/sql/WSDL?wsdlglue

http://MyServer/sql/WSDL?wsdlglueextended