Exemples d'applications pour l'envoi de demandes de services Web XML natifs

Les exemples suivants ont pour but de décrire la méthode d'envoi des demandes SOAP et la méthode de traitement des réponses. Ces exemples incluent un client Visual Studio 2005, à la fois C# et Visual Basic.

Installation initiale

Une installation commune est nécessaire pour tous les exemples d'applications. Les étapes de l'installation sont les suivantes :

  1. Créez un exemple de procédure stockée.
  2. Créez une fonction définie par l'utilisateur.
  3. Créez le point de terminaison SOAP HTTP.
ms189955.note(fr-fr,SQL.90).gifRemarque :
Pour créer ces objets dans l'exemple de base de données AdventureWorks, vous pouvez utiliser SQL Server Management Studio ou l'utilitaire de commande osql. Pour installer l'exemple de base de données AdventureWorks, consultez Installation des exemples de bases de données AdventureWorks et d'autres exemples via le programme d'installation.

Création de la procédure stockée (GetCustomerInfo)

La procédure stockée suivante explique comment une application cliente gère les paramètres d'entrée et de sortie, le code de retour, les résultats des requêtes et les erreurs si une défaillance se produit.

USE AdventureWorks
GO
DROP PROCEDURE GetCustomerInfo
GO
CREATE PROCEDURE GetCustomerInfo
                    @CustomerID nchar(5),
                    @OutputParam nchar(5) OUTPUT 
AS  

  SELECT @OutputParam = '99999'  
  -- The following INSERT should fail, and an-error returned 
  -- to the client.
  INSERT Store (CustomerID) VALUES (1)

 -- Execute a SELECT statement.
 SELECT top 3 SalesOrderID, OrderDate 
 FROM   Sales.SalesOrderHeader
 WHERE  CustomerID = @CustomerID

 -- Execute SELECT returning XML.
  SELECT CustomerID, SalesOrderID, OrderDate 
  FROM   Sales.SalesOrderHeader
  WHERE  CustomerID = @CustomerID
  for xml auto, XMLSCHEMA

  PRINT 'Hello World'
RETURN 0
Go

Cette procédure stockée comporte deux paramètres : un paramètre d'entrée (CustomerID) et un paramètre de sortie (OutParam) pour indiquer comment les paramètres sont transmis.

La procédure stockée exécute les instructions suivantes :

  • Instruction INSERT qui échoue intentionnellement et retourne une erreur. L'erreur est volontaire pour indiquer comment les erreurs sont retournées dans la réponse SOAP. Dans Visual Studio 2005, les erreurs sont retournées en tant qu'objets SqlMessage.
  • Instruction SELECT. Dans Visual Studio 2005, l'ensemble de lignes généré est retourné en tant qu'objet DataSet.
  • Requête SELECT FOR XML qui retourne des données XML. Dans Visual Studio 2005, l'ensemble de lignes généré est retourné en tant qu'objet SqlXml.
  • Instruction PRINT. Le résultat est retourné dans Visual Studio 2005 en tant qu'objet SqlMessage.

Création de la fonction définie par l'utilisateur (UDFREturningAScalar)

Cette fonction retourne une valeur de type entier.

USE AdventureWorks
GO
CREATE FUNCTION UDFReturningAScalar() 
RETURNS int
AS
BEGIN
   RETURN 555
END
Go

Création du point de terminaison SOAP HTTP (sql_endpoint)

Ce point de terminaison expose la procédure stockée et la fonction définie par l'utilisateur en tant que méthodes Web. Le point de terminaison est également configuré pour autoriser les requêtes appropriées. L'application cliente peut envoyer des demandes SOAP pour les requêtes appropriées au point de terminaison.

Pour la valeur de hostname, vous devez indiquer le nom du serveur lorsque vous réservez l'espace de noms HTTP (sp_reserve_http_namespace) pour votre point de terminaison, et également lorsque vous indiquez le paramètre SITE. De plus, la valeur de port doit correspondre au port HTTP utilisé par l'instance de SQL Server ; par exemple, "80" ou un autre numéro de port TCP le cas échéant.

USE AdventureWorks
GO
DROP ENDPOINT sql_endpoint
GO
EXEC sp_reserve_http_namespace N'http://hostname:port/sql' 
-- EXEC sp_reserve_http_namespace N'https://www.microsoft.com:80/sql' for example
GO
CREATE ENDPOINT sql_endpoint 
   STATE = STARTED
AS HTTP(
   PATH = '/sql', 
   AUTHENTICATION = (INTEGRATED ), 
   PORTS = ( CLEAR ),
   SITE = 'server'
)
FOR SOAP (
   WEBMETHOD 'http://tempUri.org/'.'GetCustomerInfo' 
            (name='AdventureWorks.dbo.GetCustomerInfo', 
             schema=STANDARD ),
   WEBMETHOD 'UDFReturningAScalar' 
            (name='AdventureWorks.dbo.UDFReturningAScalar'),
   BATCHES = ENABLED,
   WSDL = DEFAULT,
   DATABASE = 'AdventureWorks',
   NAMESPACE = 'http://Adventure-Works/Customers'
)
GO
USE master
EXEC sp_grantlogin @loginame='domain\userOrGroup'
EXEC sp_grantdbaccess @loginame='domain\userOrGroup'
GRANT CONNECT ON ENDPOINT::sql_endpoint TO [domain\userOrGroup]
GO

Dans le code précédent, vous pouvez observer les éléments suivants :

  • deux méthodes Web sont définies pour la création de ce point de terminaison ;
  • la valeur de WSDL est DEFAULT. Par conséquent, le client peut demander une réponse WSDL de la part du serveur ;
  • la valeur de BATCHES est ENABLED. Par conséquent, le client peut envoyer des demandes appropriées à ce point de terminaison ;
  • la méthode Web UDFReturningAScalar ne spécifie pas l'espace de noms facultatif, mais elle utilise l'espace de noms spécifié dans la valeur NAMESPACE ;
  • les valeurs de domain\userOrGroup, créées comme ouverture de session SQL Server, doivent être le groupe ou l'utilisateur de domaine réel qui a besoin d'un accès au point de terminaison HTTP.

Voir aussi

Référence

Ajout d'en-têtes SOAP à des applications clientes
Ajout de la prise en charge du suivi SOAP aux applications clientes
Configuration du serveur pour qu'il écoute les demandes de services Web XML natifs
Structure des messages de demande et de réponse SOAP
Instructions et restrictions d'emploi en vigueur dans les services Web XML natifs

Concepts

Gestion du type de données XML et des types CLR définis par l'utilisateur

Autres ressources

Écriture d'applications clientes

Aide et Informations

Assistance sur SQL Server 2005