Establecer el servidor para que escuche solicitudes de servicios Web XML nativos

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.

La configuración de una instancia de SQL Server como un servicio web que pueda escuchar de forma nativa las solicitudes HTTP SOAP requiere la creación de un extremo HTTP (espacio de nombres de URL) y la definición de sus propiedades y de los métodos que expone el extremo.

Los extremos HTTP que se crean para su uso con SQL Server pueden escuchar y recibir solicitudes en el mismo puerto TCP (puerto 80) que utiliza Microsoft Internet Information Services (IIS) para el servicio World Wide Web. Esto se debe a que cada dirección URL, independientemente de si se utiliza con SQL Server o con IIS, se registra con el sistema operativo Windows Server 2003 para usarse en el proceso de escucha HTTP del sistema (Http.sys).

Por ejemplo, supongamos que ha creado un extremo con la dirección URL: http://MyServer/My endpoint. A continuación, este punto final se registra con Http.sys. Cuando una solicitud SOAP se envía a este punto final, la solicitud va primero al servidor identificado en el URL (MyServer). Cuando recibe la solicitud, el nivel Http.sys del servidor compara el resto de la dirección URL con el extremo registrado y reenvía la solicitud directamente a la instancia de SQL Server, y omite IIS. Además, si utiliza la consola Administrador de servicios Internet (Inetmgr.exe), puede crear un directorio virtual equivalente a un extremo HTTP para IIS con una dirección URL diferente, como la siguiente: http://MyServer/MyVDir.

Crear y administrar extremos

Para crear y administrar extremos, utilice las siguientes instrucciones Transact-SQL:

  • CREATE ENDPOINT

    Se utiliza para crear extremos, para definir métodos para los que las aplicaciones cliente puedan enviar solicitudes HTTP SOAP al extremo, y para establecer la autenticación y especificar puertos.

  • ALTER ENDPOINT

    Se utiliza para agregar, quitar o modificar métodos, o para cambiar opciones de los extremos.

  • DROP ENDPOINT

    Se utiliza para eliminar extremos no deseados u obsoletos.

Permisos y autenticación de extremos

Para crear, modificar o quitar extremos HTTP, debe disponer de permisos. El acceso a los extremos requiere la autenticación. Estos requisitos se describen en los siguientes temas:

Programación en la Web

Para exponer procedimientos almacenados o funciones definidas por el usuario, vea el siguiente tema:

Entorno de ejecución predeterminado

De manera predeterminada, las solicitudes HTTP SOAP a servicios web XML nativos en SQL Server se ejecutan con los parámetros indicados en la tabla siguiente.

  • SET ANSI_NULL_DFLT_ON ON
    Si la opción predeterminada ANSI NULL de la base de datos es FALSE, se invalida la nulabilidad predeterminada en las nueva columnas. Para obtener más información, vea SET ANSI_NULL_DFLT_ON (Transact-SQL).

  • SET QUOTED_IDENTIFIER ON
    los identificadores pueden delimitarse con comillas dobles y los literales deben delimitarse con comillas simples. Para obtener más información, vea SET QUOTED_IDENTIFIER (Transact-SQL).

  • SET NUMERIC_ROUNDABORT OFF
    Las pérdidas de precisión no generan mensajes de error y el resultado se redondea con la precisión de la columna o variable que lo almacena. Para obtener más información, vea SET NUMERIC_ROUNDABORT (Transact-SQL).

  • SET ARITHABORT ON
    Si se produce un desbordamiento o un error de división por cero durante la ejecución de una consulta, finaliza la consulta o el lote. Para obtener más información, vea SET ARITHABORT (Transact-SQL).

  • SET ANSI_WARNINGS ON
    Si aparecen valores NULL en funciones de agregado, como SUM o AVG, se genera un mensaje de advertencia. Para obtener más información, vea SET ANSI_WARNINGS (Transact-SQL).

  • SET ANSI_NULLS ON
    Las comparaciones con un valor NULL que se realizan con operadores Es igual a (=) y No es igual a (<>) se evalúan como FALSE. Para obtener más información, vea SET ANSI_NULLS (Transact-SQL).

  • SET CONCAT_NULL_YIELDS_NULL ON
    La concatenación de un valor NULL con una cadena genera un resultado NULL. Para obtener más información, vea SET CONCAT_NULL_YIELDS_NULL (Transact-SQL).

  • SET ANSI_PADDING ON
    En las columnas que almacenan valores más cortos que el tamaño predeterminado de la columna, dichos valores se rellenan. En columnas con espacios en blanco finales en datos char, varchar, binary y varbinary, los ceros o los espacios en blanco finales no se recortan. Para obtener más información, vea SET ANSI_PADDING (Transact-SQL).

  • SET CURSOR_CLOSE_ON_COMMIT ON
    Cuando se confirma o se revierte una transacción, los cursores abiertos se cierran. Para obtener más información, vea SET CURSOR_CLOSE_ON_COMMIT (Transact-SQL).

  • SET IMPLICIT_TRANSACTIONS OFF
    De forma predeterminada, las transacciones en sesiones HTTP SOAP actúan en modo de confirmación automática, de forma que todas las instrucciones individuales se confirman si se completan correctamente. Para obtener más información, vea SET IMPLICIT_TRANSACTIONS (Transact-SQL).

Consideraciones sobre la conmutación por error de clústeres para servicios SOAP HTTP

Al instalar SQL Server, es recomendable usar una cuenta de dominio como cuenta del servicio SQL y asegurarse de que la cuenta no tenga derechos administrativos completos en el equipo local. Esto tiene algunas implicaciones al configurar un servidor SQL como servidor virtual en un clúster de Windows. Hay que tener en cuenta ciertas consideraciones al configurar servicios nativos HTTP-SOAP de SQL.

SQL Server obtiene provecho del controlador HTTP de Windows Server 2003. Este agente de escucha HTTP está diseñado para dirigir las solicitudes a cualquier aplicación suscrita a él en la plataforma Windows, incluidos los servicios IIS y SQL Server. Para suscribirse a este servicio, las aplicaciones tienen que llamar a las API de HTTP para reservar la dirección URL raíz específica de la aplicación, denominada también espacio de nombres. Esta reserva indica al controlador HTTP que dirija todas las solicitudes siguientes desde esa dirección URL a la aplicación suscrita. La llamada a estas API de HTTP se debe realizar en el contexto de una cuenta con derechos de administrador local de Windows. A partir de SQL Server 2005, estas llamadas se realizan mediante un procedimiento almacenado especial llamado sp_reserve_http_namespaces (para obtener más información, vea Reservar un espacio de nombres HTTP). Este procedimiento almacenado crea un enlace entre la dirección URL raíz y la cuenta del servicio SQL para el enrutamiento del controlador HTTP de Windows. Si la cuenta del servicio SQL no dispone de derechos de administrador en el equipo local, hay que llamar al procedimiento almacenado mediante una cuenta de administrador local de Windows. Una vez que se ha registrado este espacio de nombres, los extremos SQL SOAP se pueden crear en la dirección URL para la redirección de las solicitudes HTTP subsiguientes. En una configuración de clústeres, esta reserva de espacio de nombres HTTP debe ser establecida por un administrador local de Windows en cada uno de los nodos. Así se garantiza que el servicio HTTP siga dirigiendo las solicitudes al servidor SQL si se produce una conmutación por error en cualquiera de los nodos.

Otro aspecto que se debe tener en cuenta en la conmutación por error de clústeres con SQL Server y HTTP-SOAP es el uso de certificados de cifrado en las solicitudes a través del canal SSL. Para obtener más información, vea Configurar certificados para su uso con SSL. En un entorno de clústeres, la configuración de certificados también se debe llevar a cabo en cada uno de los nodos. El sujeto de estos certificados se debe establecer en el nombre completo del servidor virtual. Para garantizar que se configura la autenticación Kerberos en HTTP, vea Registrar nombres principales de servicio de Kerberos mediante Http.sys, que también se aplica a los clústeres.