Verwenden der benutzerdefinierten WSDL-Anwendung

Zum Einrichten der benutzerdefinierte WSDL-Anwendung müssen Sie die folgenden Aufgaben ausführen:

  • Erstellen einer benutzerdefinierten WSDL-Handleranwendung zur Unterstützung Ihrer WSDL-Anwendung.
    Anweisungen zum Ausführen dieser Aufgabe finden Sie unter Erstellen der benutzerdefinierten WSDL-Anwendung.
  • Konfigurieren Ihrer Installation von SQL Server 2005, um den benutzerdefinierten Handler zu registrieren und verwenden zu können.

Diese Aufgabe schließt das Erstellen eines Bereitstellungsskripts ein, das die folgenden Änderungen an der Installation von SQL Server 2005 vornimmt:

  • Es fügt die benutzerdefinierte WSDL-Assembly (CustomWSDL.dll) dem Server hinzu und registriert sie für die Verwendung mit der ADD ASSEMBLY-Anweisung.
  • Es erstellt alle zusätzlichen gespeicherten Prozeduren, die Ihre benutzerdefinierte WSDL-Handleranwendung für die ordnungsgemäße Ausführung benötigt.
  • Es erstellt oder ändert einen HTTP-Endpunkt in der Instanz von SQL Server, sodass sie Ihren benutzerdefinierten WSDL-Handler verwendet und anstelle der standardmäßigen oder der einfachen WSDL-Antwort eine benutzerdefinierte WSDL-Antwort zurückgibt.

Bereitstellen des benutzerdefinierten WSDL-Handlers

Die folgende Prozedur setzt voraus, dass Sie als lokaler Administrator an einem Computer, der SQL Server 2005 ausführt, angemeldet sind, oder dass Sie mit diesem eine Remoteverbindung mit Administratorprivilegien herstellen können.

Teil 1: Konfigurieren des Servers

  1. Klicken Sie in SQL Server Management Studio auf Neue Abfrage, und stellen Sie eine Verbindung mit dem Server her.

  2. Kopieren Sie das folgende Transact-SQL-Skript in das Abfragefenster.

    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. Führen Sie das Skript aus.

Teil 2: Testen des Handlers

Um sicherzustellen, dass der benutzerdefinierte WSDL-Handler ordnungsgemäß funktioniert, versuchen Sie, die geänderten URL-Abfragezeichenfolgen zu verwenden, um eine benutzerdefinierte WSDL-Antwort anzufordern. Wenn beispielsweise die Instanz von SQL Server 2005, mit der Sie die Verbindung herstellen, den Namen MyServer trägt und das oben angeführte Skript verwendet wird, muss dessen Endpunktpfad sql/WSDL, lauten. Der Endpunkt antwortet dann mithilfe des benutzerdefinierten WSDL-Handlers. Zum Testen der Verbindung mit diesem Endpunkt und Bereitstellen einer benutzerdefinierten WSDL-Anforderung verwenden Sie daher im HTTP-Webbrowserclient einen URL, wie z. B. den folgenden:

http://MyServer/sql/WSDL?wsdlargument

Der Wert von argument kann ein beliebiger der folgenden, die Zeichenfolgen der einzelnen Client- und WSDL-Typen unterstützenden benutzerdefinierten WSDL-Bezeichner sein.

Benutzerdefinierter WSDL-URL Beschreibung

everett

Für einfache Webclients; mithilfe von Visual Studio 2003-Entwicklertools entwickelt.

jbuilder

Für einfache Webclients; mithilfe von Borland JBuilder 9.0-Entwicklungstools entwickelt.

glue

Für einfache Webclients; mithilfe von webMethods Glue 5.0.1-Entwicklungstools entwickelt.

Wie in der folgenden Tabelle gezeigt, geben alle drei benutzerdefinierten <argument>-Werte WSDL-Antworten (systemeigene XSD-Typen) zurück. Wenn Sie das vollständige, erweiterte WSDL-Format erhalten möchten, können Sie der Argumentzeichenfolge der Abfrage extended hinzufügen.

Einfacher WSDL-Bezeichner Erweiterter WSDL-Bezeichner

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

Siehe auch

Aufgaben

C#-Codeliste für die benutzerdefinierte WSDL-Anwendung

Verweis

Implementieren von benutzerdefinierter WSDL-Unterstützung
Erstellen der benutzerdefinierten WSDL-Anwendung

Konzepte

Bewährte Methoden für das Verwenden systemeigener XML-Webdienste

Hilfe und Informationen

Informationsquellen für SQL Server 2005