Réservation d'espaces de noms d'URL au moyen de Http.sys

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

Vous pouvez réserver de façon explicite un espace de noms d'URL dans HTTP.SYS, puis utiliser cet espace de noms afin de créer des points de terminaison HTTP. Pour ce faire, vous devez comprendre le concept de réservation explicite et implicite de noms d'espaces et la manière dont SQL Server enregistre un point de terminaison HTTP au moyen de HTTP.SYS.

Réservation explicite et implicite d'espaces de noms

Lorsqu'un utilisateur exécute une instruction CREATE ENDPOINT comme celle-ci :

CREATE ENDPOINT sql_endpoint 
   STATE = STARTED
AS HTTP (
   PATH = '/sql/AdvWorks', 
   AUTHENTICATION = (INTEGRATED ), 
   PORTS = ( CLEAR ), 
   SITE = 'MyServer'
)
FOR SOAP (
    ...
)
Go

L'espace de noms http://MyServer:80/sql/AdvWorks est implicitement réservé dans HTTP.SYS. Ceci signifie que tant que l'application basée sur SQL Server est ouverte, toutes les demandes HTTP vers ce point de terminaison sont transmises à l'instance de SQL Server. En revanche, cet espace de noms peut être utilisé par d'autres applications si l'instance de SQL Server n'est pas ouverte.

Un espace de noms réservé de manière explicite est réservé spécifiquement pour SQL Server, ce qui veut dire que toutes les demandes HTTP vers ce point de terminaison sont transmises à l'instance de SQL Server. Pour plus d'informations, consultez Réservation d'un espace de noms HTTP.

Notes

Visual Studio 2005 et Http.sys suivent des règles de canonisation d'URL. Par exemple, Http.sys accepte les caractères génériques inclusifs, comme « /SQL/Mypath/... », dans le paramètre PATH lors de la création d'un point de terminaison. En revanche, Visual Studio 2005 utilise des règles plus strictes et supprime les informations entre guillemets avant de transmettre l'URL.

Méthode utilisée par SQL Server pour enregistrer un point de terminaison

La gestion des points de terminaison HTTP se fait au moyen de trois instructions : CREATE ENDPOINT, ALTER ENDPOINT et DROP ENDPOINT. Remarque : vous devez obligatoirement disposer des autorisations requises pour créer, modifier ou supprimer un point de terminaison. Pour plus d'informations, consultez GRANT – octroi d'autorisations de point de terminaison (Transact-SQL).

Lorsque vous exécutez CREATE ENDPOINT pour créer un point de terminaison, SQL Server exécute l'instruction et enregistre le point de terminaison avec le HTTP.SYS. Selon le contexte dans lequel l'instruction du point de terminaison est spécifiée, SQL Server emprunte l'identité de l'appelant comme suit :

  • Si vous exécutez l'instruction dans le contexte d'un compte Windows, SQL Server emprunte l'identité de l'appelant pour enregistrer le point de terminaison dans HTTP.SYS.

  • Si vous exécutez l'instruction dans le contexte d'un compte SQL Server, par exemple sa ou toute autre connexion SQL Server, SQL Server emprunte l'identité de l'appelant en utilisant le compte SQL Server spécifié lors de l'installation de SQL Server afin d'enregistrer le point de terminaison dans HTTP.SYS.

L'utilisateur du compte Windows et du compte SQL Server dont SQL Server emprunte l'identité doivent tous les deux disposer de privilèges d'administrateur Windows local pour que l'enregistrement réussisse.

Vérification des réservations d'espaces de noms HTTP

Pour afficher les espaces de noms réservés dans HTTP.SYS, vous devez exécuter l'utilitaire de configuration HTTP, Httpcfg.exe, à l'invite de commandes.

Notes

Cet utilitaire est installé en même temps que les autres outils de support Windows Server. Pour plus d'informations, consultez Configuration du pilote en mode noyau HTTP (Http.sys).

L'exemple suivant illustre l'utilisation de l'utilitaire Httpcfg.exe pour retourner la liste d'espaces de noms HTTP réservés :

httpcfg query urlacl

Cette commande affiche une liste de toutes les réservations en cours, avec, à chaque fois, l'URL de l'espace de noms et le compte qui l'a réservé.

Voici un exemple de résultat de cette commande :

URL: http://adventure-works.com:80/sql/
ACL : D:(A;;GA;;;S-1-5-21-123456789-1234567890-1262470759-1010)
-----------------------------------------------------------------
URL : https://adventure-works.com:443/sql/
ACL : D:(A;;GA;;;NS)
-----------------------------------------------------------------

Notes

Cette procédure est exclusivement réservée aux membres du rôle sysadmin et oblige le compte d'emprunt d'identité à disposer de privilèges d'administrateur sur l'ordinateur.