Share via


Reservar un espacio de nombres HTTP

Para reservar un espacio de nombres HTTP y utilizarlo con una instancia de SQL Server 2005 se puede efectuar una reserva implícita, como cuando se utiliza CREATE ENDPOINT, o una reserva explícita, con el procedimiento almacenado sp_reserve_http_namespace.

Los espacios de nombres de URL se reservan por los siguientes motivos:

  • Si una aplicación se ejecuta con una cuenta que no sea de administrador, no puede enlazarse con el espacio de nombres en tiempo de ejecución sin que un administrador reserve el espacio de nombres. Es un requisito del controlador HTTP en modo núcleo (Http.sys).
    La única excepción a esta regla se produce si la aplicación se ejecuta en la cuenta del sistema local. Las aplicaciones que se ejecutan en la cuenta del sistema local pueden enlazarse con cualquier espacio de nombres, siempre que esté libre. Aún en el caso de que realice la ejecución con la cuenta del sistema local, recomendamos reservar los espacios de nombres por el siguiente motivo.
  • La reserva de un espacio de nombres garantiza que las demás aplicaciones no pueden enlazarse con él; por tanto, la aplicación es la única propietaria del espacio de nombres.
    Por ejemplo, si se ejecuta una instancia de SQL Server 2005 en la cuenta del sistema local, no es preciso reservar espacios de nombres, pero sí se recomienda para evitar conflictos de aplicaciones en las direcciones URL.

La reserva de espacios de nombres es jerárquica. Por ejemplo, si el espacio de nombres http://adventure-works.com:80/ está reservado, también lo están los subespacios como http://adventure-works.com:80/sqlapp1 y http://adventure-works.com:80/sqlapp2/dir1.

[!NOTA] Para reservar un espacio de nombres HTTP con el controlador HTTP de modo núcleo (Http.sys) se necesitan privilegios de administrador de Windows en el equipo local donde está instalada la instancia de SQL Server 2005.

Crear una reserva explícita

Para crear una reserva explícita, un administrador que desee que los usuarios puedan ejecutar una instrucción DLL (lenguaje de definición de datos) del extremo sin necesidad de privilegios superiores en el equipo, puede reservar un espacio de nombres de URL con el procedimiento almacenado sp_reserve_http_namespace.

Por ejemplo, puede conectarse a una instancia de SQL Server 2005 mediante la autenticación de Windows, un inicio de sesión que cuenta con privilegios de administrador y ejecutar lo siguiente:

sp_reserve_http_namespace N'http://MyServer:80/sql'
GO

El procedimiento almacenado reserva de forma explícita el espacio de nombres especificado, donde MyServer es el nombre del servidor y 80 el número de puerto. Este procedimiento reserva el espacio de nombres de URL especificado de forma que las operaciones de DDL posteriores en el espacio de nombres no requieren privilegios de administrador en el equipo. Un usuario sin privilegios de administrador en el equipo puede ejecutar la instrucción DDL del extremo.

Por ejemplo, un usuario puede ejecutar la siguiente instrucción CREATE ENDPOINT:

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

La instrucción del extremo registra /sql/AdvWorks en el espacio de nombres reservado en HTTP.SYS. A continuación, una aplicación cliente puede enviar una solicitud SOAP, por ejemplo mediante la solicitud de una respuesta WSDL del servidor, al extremo:

http://MyServer/sql/AdvWorks?wsdl

El nombre del espacio de nombres especificado en el procedimiento almacenado sp_reserve_http_namespace debe tener el formato:

<scheme>://<hostpart>[:<port>]/<RelativeURI>
  • scheme
    Puede ser http o https.
  • hostpart
    Puede ser un nombre de host específico o los siguientes caracteres comodín: el signo más (+) o asterisco (*).

    El signo más (+) implica que la operación de reserva se aplica a todos los nombres de host posibles del equipo en los elementos <scheme> y <port> especificados.

    El asterisco (*) implica que la operación de reserva se aplica a todos los nombres de host posibles del equipo en los valores <scheme> y <port> no reservados explícitamente por otra operación, como la ejecución de otras operaciones sp_reserve_http_namespace, extremos activos u otras aplicaciones.

Identificar el espacio de nombres para un extremo

Puede identificar el espacio de nombres correcto para un extremo en función de los parámetros de la instrucción CREATE ENDPOINT.

El valor del parámetro PORTS para la instrucción CREATE ENDPOINT determina el esquema del espacio de nombres, como se muestra en la siguiente tabla:

Valor del extremo Valor <scheme>

CLEAR

http

SSL

https

n

http

El valor de los parámetros CLEAR_PORT o SSL_PORT establece el valor <port> del espacio de nombres.

El valor del parámetro PATH establece el valor <RelativeURI> del espacio de nombres.

El valor del parámetro SITE establece el valor <hostpart> del espacio de nombres.

Por ejemplo, la siguiente instrucción crea un extremo con el espacio de nombres http://testhost:80/sqlurl/myapp.

CREATE ENDPOINT ext_endpoint
    STATE = STARTED
AS HTTP (       
PATH = '/squl/myapp'
, PORTS = CLEAR
, SITE = testhost
, CLEAR_PORT = 80 
)

La siguiente instrucción crea un extremo con el espacio de nombres https://*:443/sqlurl/myapp:

CREATE ENDPOINT ext_endpoint
    STATE = STARTED
AS HTTP (       
PATH = ‘/squl/myapp’
, PORTS = SSL
, SITE = *
, SSL_PORT = 443 
)

Ejemplos

A continuación se incluye otro ejemplo en el que el administrador reserva un espacio de nombres en HTTP.SYS para la conexión SSL. Por tanto, un usuario puede crear extremos en los que PORT se establece en SSL.

sp_reserve_http_namespace N'https://MyServer:443/sql'

Vea también

Referencia

Reservar espacios de nombres URL mediante Http.sys
Eliminar una reserva de espacio de nombres HTTP

Conceptos

Configurar el controlador HTTP en modo de núcleo (Http.sys)

Ayuda e información

Obtener ayuda sobre SQL Server 2005