Utilisation de l'application WSDL personnalisée
Cette fonctionnalité sera supprimée dans une prochaine version de Microsoft SQL Server. Évitez d'utiliser cette fonctionnalité dans de nouveaux travaux de développement et prévoyez de modifier les applications qui utilisent actuellement cette fonctionnalité.
Pour configurer l'exemple d'application WSDL personnalisée, vous devez effectuer les tâches suivantes :
Créer une application gestionnaire WSDL personnalisée pour la prise en charge de votre propre WSDL.
Pour effectuer cette tâche, consultez Création de l'application WSDL personnalisée.
Configurer votre installation de SQL Server pour qu'elle enregistre et utilise le gestionnaire WSDL personnalisé.
Cette tâche implique la création d'un script de déploiement qui apporte les modifications suivantes à votre installation de SQL Server :
ajoute l'assembly personnalisé WSDL (CustomWSDL.dll) au serveur et l'inscrit pour l'utiliser avec l'instruction ADD ASSEMBLY ;
crée les éventuelles procédures stockées supplémentaires dont dépend votre application gestionnaire WSDL personnalisée pour fonctionner correctement ;
crée ou modifie un point de termination HTTP sur l'instance de SQL Server pour qu'il utilise votre gestionnaire WSDL personnalisé et renvoie une réponse WSDL personnalisée au lieu de la réponse par défaut ou d'une réponse WSDL simple.
Déploiement du gestionnaire WSDL personnalisé
La procédure suivante suppose que vous êtes connecté en tant qu'administrateur local sur un ordinateur exécutant SQL Server ou que vous pouvez vous connecter à ce dernier à distance avec des privilèges administratifs.
Première partie : Configurer le serveur
Dans SQL Server Management Studio, cliquez sur Nouvelle requête et connectez-vous au serveur.
Copiez le script Transact-SQL suivant dans la fenêtre Requête.
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]
Exécutez le script.
Deuxième partie : Test du gestionnaire
Pour vous assurer que le gestionnaire WSDL personnalisé fonctionne correctement, essayez d'utiliser les chaînes de requête d'URL modifiées pour demander un WSDL personnalisé. Par exemple, si l'instance de SQL Server à laquelle vous vous connectez se nomme MyServer et que vous exécutez le script précédent, il doit y avoir sur le serveur un chemin de point de terminaison sql/WSDL, et vous obtiendrez une réponse en utilisant le gestionnaire WSDL personnalisé. Par conséquent, pour tester la connexion à ce point de terminaison et créer une demande WSDL personnalisée, vous allez utiliser une URL de la forme suivante dans le client navigateur Web HTTP :
http://MyServer/sql/WSDL?wsdlargument
La valeur de argument peut être n'importe lequel des identifiants WSDL personnalisés suivants qui prend en charge les chaînes correspondant à chacun des types de WSDL et de client.
URL WSDL personnalisée |
Description |
---|---|
everett |
Pour les clients Web simples créés à l'aide des outils de développement Visual Studio 2003. |
jbuilder |
Pour les clients Web simples créés à l'aide des outils de développement Borland JBuilder 9.0. |
glue |
Pour les clients Web simples créés à l'aide des outils de développement webMethods Glue 5.0.1. |
Comme l'indique le tableau suivant, la valeur <argument> renvoie un WSDL simple (tous types XSD natifs) pour ces trois choix personnalisés ; si toutefois vous souhaitez le WSDL étendu dans son ensemble, vous pouvez ajouter extended à la chaîne d'argument de la requête.
Identifiant WSDL simple |
Identifiant WSDL étendu |
---|---|
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 |