Share via


Lancement d'une session SOAP

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 lancer une session, la demande du client doit contenir l'en-tête sqlSession et spécifier la valeur true dans l'attribut initiate. Si une session est établie avec succès, la réponse du serveur contient l'en-tête de session qui spécifie une valeur générée par le serveur pour la propriété sessionID.

Les informations d'identification de sécurité de l'initiateur de la session sont associées à la session et toutes les demandes suivantes pendant la session doivent être exécutées avec les mêmes informations d'identification.

Si le point de terminaison HTTP qui traite la session SOAP a spécifié une clause DATABASE, ce paramètre prend effet uniquement pour la requête qui lance la session. Les demandes suivantes sont exécutées dans la base de données actuelle de la session.

Notes

Les sessions SOAP sont indépendantes de la connexion et peuvent durer plus longtemps que les connexions SQL Server. Les sessions SOAP ne sont pas comptabilisées dans le nombre maximal de connexions du serveur.

Exemple

L'exemple suivant illustre comment lancer une session SOAP. Lors du lancement d'une session SOAP, les messages suivants sont utilisés :

  • Demande SOAP envoyée par le client des services Web pour demander une session

  • Réponse SOAP retournée par le serveur pour confirmer la demande

L'exemple ci-dessous illustre une demande SOAP envoyée par le client.

<SOAP-ENV:Header
  xmlns:SOAP-ENV="https://schemas.xmlsoap.org/soap/envelope/"
  xmlns:sqloptions="https://schemas.microsoft.com/sqlserver/2004/SOAP/Options">
    <!-- create a new session, with explicit timeout --><sqloptions:sqlSession initiate="true" timeout="12"/>
</SOAP-ENV:Header>

Notez que le nom de l'option respecte la casse ; par conséquent la chaîne exacte doit inclure le S majuscule, car sqlSession est codé à l'avance.

Pour lancer la session, le serveur retourne ensuite la demande ci-dessous.

<SOAP-ENV:Header
  xmlns:SOAP-ENV="https://schemas.xmlsoap.org/soap/envelope/"
  xmlns:sqloptions="https://schemas.microsoft.com/sqlserver/2004/SOAP/Options">
    <!-- response to creating a new session, or enlisting in an existing session --><sqloptions:sqlSession sessionId="AAAAADreaLE=" timeout="12"/>
</SOAP-ENV:Header>

Dans cet exemple, tant que la valeur du délai d'expiration demandé est inférieure ou égale au délai d'expiration maximal de la session défini au niveau du serveur sur le point de terminaison HTTP, le serveur respecte l'intervalle d'expiration demandé par le client et renvoie la même valeur ("12") dans la réponse. Si l'intervalle d'expiration spécifié par le client dans la demande est supérieur au délai d'expiration maximal du serveur, c'est ce dernier qui est spécifié dans la réponse au client.