Configuration du serveur pour qu'il écoute les demandes de services Web XML natifs

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é.

La configuration d'une instance de SQL Server en tant que service Web pouvant écouter en mode natif les demandes SOAP HTTP exige la création d'un point de terminaison HTTP (espace de noms d'URL) et la définition de ses propriétés, ainsi que des méthodes exposées par le point de terminaison.

Les points de terminaison HTTP créés en vue d'une utilisation avec SQL Server peuvent écouter et recevoir des demandes sur le même port TCP (port 80) que celui utilisé par Microsoft Internet Information Services (IIS) pour le service World Wide Web. Cela peut se produire car chaque URL, qu'elle soit destinée à être utilisée avec SQL Server ou avec IIS, est enregistrée auprès du système d'exploitation Windows Server 2003 pour une utilisation via le processus d'écoute HTTP du système (Http.sys).

Par exemple, supposons que vous avez créé un point de terminaison avec l'URL suivante : http://MyServer/My endpoint. Ce point de terminaison est ensuite enregistré auprès de Http.sys. Lorsqu'une demande SOAP est envoyée à ce point de terminaison, elle est tout d'abord dirigée vers le serveur identifié dans l'URL (MyServer). Lors de la réception de la requête, la couche Http.sys sur le serveur compare le reste de l'URL au point de terminaison enregistré et transmet la demande à l'instance de SQL Server en ignorant IIS. En outre, à l'aide de la console du Gestionnaire des services Internet (Inetmgr.exe), vous pouvez créer un répertoire virtuel équivalant à un point de terminaison HTTP pour IIS avec une URL différente, telle que : http://MyServer/MyVDir.

Création et gestion des points de terminaison

Pour créer et gérer des points de terminaison, utilisez les instructions Transact-SQL suivantes :

  • CREATE ENDPOINT

    Permet de créer des points de terminaison, de définir les méthodes pour lesquelles les applications clientes peuvent envoyer des requêtes SOAP HTTP au point de terminaison, ainsi que de définir l'authentification et de spécifier les ports.

  • ALTER ENDPOINT

    Permet d'ajouter, de supprimer ou de modifier des méthodes, ou encore de modifier des options de points de terminaison.

  • DROP ENDPOINT

    Permet de supprimer les points de terminaison indésirables ou obsolètes.

Autorisations et authentification des points de terminaison

Pour créer, modifier ou supprimer des points de terminaison HTTP, vous devez disposer des autorisations adéquates. L'accès aux points de terminaison exige une authentification. Ces exigences sont décrites dans les rubriques suivantes :

Programmabilité sur le Web

Pour exposer des procédures stockées ou des fonctions définies par l'utilisateur, consultez la rubrique suivante :

Environnement d'exécution par défaut

Par défaut, les demandes SOAP HTTP envoyées aux services Web XML natifs dans SQL Server sont exécutées avec les paramètres répertoriés dans le tableau suivant.

  • SET ANSI_NULL_DFLT_ON ON
    Si l'option par défaut ANSI NULL pour la base de données a la valeur FALSE, l'acceptation des valeurs Null par défaut des nouvelles colonnes est remplacée. Pour plus d'informations, consultez SET ANSI_NULL_DFLT_ON (Transact-SQL).

  • SET QUOTED_IDENTIFIER ON
    Les identificateurs peuvent être encadrés par des guillemets et les valeurs littérales par des apostrophes. Pour plus d'informations, consultez SET QUOTED_IDENTIFIER (Transact-SQL).

  • SET NUMERIC_ROUNDABORT OFF
    Les pertes de précision ne génèrent pas de messages d'erreur et le résultat est arrondi en fonction de la précision de la colonne ou de la variable contenant le résultat. Pour plus d'informations, consultez SET NUMERIC_ROUNDABORT (Transact-SQL).

  • SET ARITHABORT ON
    Si une erreur de dépassement de capacité ou de division par zéro se produit lors de l'exécution de la requête, la requête ou le traitement prend fin. Pour plus d'informations, consultez SET ARITHABORT (Transact-SQL).

  • SET ANSI_WARNINGS ON
    Si des valeurs de type Null apparaissent dans des fonctions d'agrégation (telles que SUM ou AVG), le système génère un message d'avertissement. Pour plus d'informations, consultez SET ANSI_WARNINGS (Transact-SQL).

  • SET ANSI_NULLS ON
    Les comparaisons avec une valeur Null effectuées à l'aide du signe égal (=) ou différent de (<>) retournent la valeur FALSE. Pour plus d'informations, consultez SET ANSI_NULLS (Transact-SQL).

  • SET CONCAT_NULL_YIELDS_NULL ON
    La concaténation d'une valeur Null avec une chaîne entraîne un résultat Null. Pour plus d'informations, consultez SET CONCAT_NULL_YIELDS_NULL (Transact-SQL).

  • SET ANSI_PADDING ON
    Pour les colonnes qui stockent des valeurs plus courtes que la taille définie de la colonne, les valeurs sont complétées. Pour les colonnes possédant des espaces à droite dans les données char, varchar, binary et varbinary, les espaces ou les zéros à droite ne sont pas tronqués. Pour plus d'informations, consultez SET ANSI_PADDING (Transact-SQL).

  • SET CURSOR_CLOSE_ON_COMMIT ON
    Lorsqu'une transaction est validée ou restaurée, tout curseur ouvert est fermé. Pour plus d'informations, consultez SET CURSOR_CLOSE_ON_COMMIT (Transact-SQL).

  • SET IMPLICIT_TRANSACTIONS OFF
    Par défaut, les transactions contenues dans les sessions SOAP HTTP fonctionnent en mode de validation automatique, toutes les instructions étant validées si elles s'achèvent correctement. Pour plus d'informations, consultez SET IMPLICIT_TRANSACTIONS (Transact-SQL).

Considérations relatives au basculement de cluster pour les services SOAP HTTP

Lors de l'installation de SQL Server, il est recommandé d'utiliser un compte de domaine comme compte de service SQL et de s'assurer que ce compte ne dispose pas de droits d'administration complets sur l'ordinateur local. Cela peut avoir des implications lors de la configuration d'un serveur SQL en tant que serveur virtuel sur un cluster Windows. Les considérations portent sur la configuration des services SQL HTTP-SOAP natifs.

SQL Server utilise le pilote HTTP de Windows Server 2003. Cet écouteur HTTP est conçu pour router les demandes vers toute application qui s'y abonne dans la plateforme Windows, y compris SQL Server et les services Internet (IIS). Pour s'abonner à ce service, les applications doivent appeler les API HTTP afin de réserver l'URL racine spécifique de l'application, également connue sous le nom d'espace de noms. Cette réservation indique au pilote HTTP qu'il doit router toutes les demandes ultérieures provenant de cette URL à l'application abonnée. L'appel à ces API HTTP doit s'effectuer dans le contexte d'un compte qui possède des droits d'administrateur Windows local. Depuis SQL Server 2005, ces appels sont effectués au moyen d'une procédure stockée spéciale nommée sp_reserve_http_namespaces (pour plus d'informations, consultez Réservation d'un espace de noms HTTP). Cette procédure stockée crée une liaison entre l'URL racine et le compte de service SQL pour le routage du pilote HTTP Windows. Si le compte de service SQL ne dispose pas de droits d'administrateur sur l'ordinateur local, la procédure stockée doit être appelée à l'aide d'un compte d'administrateur local Windows. Une fois cet espace de noms inscrit, les points de terminaison SQL SOAP peuvent être créés sous cette URL afin de rediriger les demandes HTTP ultérieures. Dans un environnement de cluster, cette réservation d'espace de noms HTTP doit être établie par un administrateur Windows local sur chacun des nœuds. Cela permet de garantir que le service HTTP continue de router les demandes vers SQL Server en cas de basculement vers l'un des nœuds.

L'une des autres considérations liées au basculement de cluster avec SQL Server et HTTP-SOAP concerne l'utilisation de certificats de chiffrement sur le canal SSL. Pour plus d'informations, consultez Configuration d'un certificat en vue de son utilisation par SSL. Dans un environnement de cluster, la configuration des certificats doit également être effectuée sur chacun des nœuds. Le sujet de ces certificats doit être défini comme le nom complet du serveur virtuel. Pour vous assurer que l'authentification Kerberos sur HTTP est configurée, consultez Inscription de noms de principaux du service Kerberos à l'aide de Http.sys, qui s'applique également aux clusters.