Reservar espacios de nombres URL mediante Http.sys

Esta característica se quitará en una versión futura de Microsoft SQL Server. Evite utilizar esta característica en nuevos trabajos de desarrollo y tenga previsto modificar las aplicaciones que actualmente la utilizan.

Puede reservar de forma explícita un espacio de nombres URL en HTTP.SYS y utilizar este espacio de nombres para crear extremos de HTTP. Para ello, es preciso estar familiarizado con el concepto de reserva explícita e implícita de espacios de nombres y cómo SQL Server registra un extremo de HTTP con HTTP.SYS.

Reserva explícita contra reserva implícita de espacios de nombres

Cuando un usuario ejecuta una instrucción CREATE ENDPOINT, como la siguiente:

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

El espacio de nombres http://MyServer:80/sql/AdvWorks se reserva implícitamente en HTTP.SYS. Esto significa que mientras se está ejecutando la aplicación basada en SQL Server, cualquier solicitud HTTP enviada a este extremo se reenvía a la instancia de SQL Server. Sin embargo, otras aplicaciones pueden utilizar este espacio de nombres si la instancia de SQL Server no se está ejecutando.

Cuando se reserva un espacio de nombres explícitamente, el espacio de nombres se reserva específicamente para SQL Server y todas las solicitudes HTTP enviadas a este extremo se reenvían a la instancia de SQL Server. Para obtener más información, vea Reservar un espacio de nombres HTTP.

Nota

Visual Studio 2005 y Http.sys se rigen por reglas de canonización URL distintas. Por ejemplo, Http.sys puede aceptar un carácter comodín inclusivo, como "/SQL/Mypath/...", especificado como parte de la configuración PATH cuando se crea un extremo. Sin embargo, Visual Studio 2005 tiene unas reglas de canonización más estrictas y recorta la información "..." antes de transmitir la dirección URL.

Cómo registra SQL Server el extremo

Para administrar extremos de HTTP, utilice CREATE ENDPOINT, ALTER ENDPOINT y DROP ENDPOINT. Para crear, modificar o eliminar un extremo, debe disponer de los permisos necesarios. Esta información está disponible en el tema GRANT (permisos de extremo de Transact-SQL).

Cuando se ejecuta CREATE ENDPOINT para crear un extremo, SQL Server ejecuta la instrucción y registra el extremo con HTTP.SYS. Dependiendo del contexto en el que se especifique la instrucción de extremo, SQL Server suplanta al autor de las llamadas como sigue:

  • Si ejecuta una instrucción en el contexto de una cuenta de Windows, SQL Server suplanta al autor de la llamada para registrar el extremo con HTTP.SYS.

  • Si ejecuta la instrucción en el contexto de una cuenta SQL Server, por ejemplo, sa o cualquier otro inicio de sesión de SQL Server, SQL Server suplanta al autor de la llamada mediante la cuenta de SQL Server, especificada cuando se instala SQL Server, para registrar el extremo con HTTP.SYS.

Tanto la cuenta de Windows como la cuenta de SQL Server suplantadas por SQL Server debe tener privilegios de administrador local de Windows para que el registro del extremo de HTTP sea correcto.

Comprobar las reservas de espacios de nombres de HTTP

Para determinar qué espacios de nombres se han reservado en HTTP.SYS, puede ejecutar la utilidad de configuración de HTTP, Httpcfg.exe, en el símbolo del sistema.

Nota

Httpcfg.exe se instala como parte de las herramientas de soporte técnico de Windows Server. Para obtener más información, vea Configurar el controlador HTTP en modo de kernel (Http.sys).

En el siguiente ejemplo se muestra el uso de Httpcfg.exe para devolver la lista de espacios de nombres de HTTP reservados:

httpcfg query urlacl

Este comando mostrará una lista de todas las reservas de espacios de nombres existentes y devuelve la dirección URL del espacio de nombres y la cuenta en la que fue reservada.

La salida de este comando suele ser la siguiente:

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)
-----------------------------------------------------------------

Nota

Este procedimiento sólo lo pueden ejecutar los miembros del rol sysadmin y requiere que la cuenta de suplantación disponga de privilegios de administrador en el equipo.