Definindo o servidor para escutar solicitações dos XML Web Services Nativos

Esse recurso será removido em uma versão futura do Microsoft SQL Server. Evite usar esse recurso em desenvolvimentos novos e planeje modificar os aplicativos que atualmente o utilizam.

A configuração de uma instância do SQL Server como Serviço Web que possa ouvir de forma nativa solicitações de HTTP SOAP requer a criação de um ponto de extremidade HTTP (namespace da URL) e a definição de suas propriedades, bem como dos métodos expostos pelo ponto de extremidade.

Os pontos de extremidade HTTP que são criados para uso com o SQL Server podem ouvir e receber solicitações na mesma porta TCP (porta 80) usada pelos IIS (Serviços de Informações da Internet) do Microsoft para o serviço da World Wide Web. Isso pode ocorrer porque cada URL, independentemente de dever ser usada com o SQL Server ou os IIS, é registrada com o sistema operacional Windows Server 2003 para uso pelo processo do ouvinte de HTTP do sistema (Http.sys).

Por exemplo, supondo que você tenha criado um ponto de extremidade com a URL: http://MyServer/My endpoint. Esse ponto de extremidade é registrado então com Http.sys. Quando uma solicitação de SOAP é enviada a esse ponto de extremidade, ela primeiro vai para o servidor identificado na URL (MyServer). No recebimento da solicitação, a camada do Http.sys no servidor compara o restante da URL com o ponto de extremidade registrado e encaminha a solicitação diretamente para a instância do SQL Server, e ignora os IIS. Além disso, usando o console do Gerenciador de Serviços da Internet (Inetmgr.exe), você pode criar um diretório virtual equivalente a um ponto de extremidade HTTP para IIS com uma URL diferente, como http://MyServer/MyVDir.

Criando e gerenciando pontos de extremidade

Para criar e gerenciar pontos de extremidade, use as seguintes instruções do Transact-SQL:

  • CREATE ENDPOINT

    Use para criar pontos de extremidade, definir métodos para os quais os aplicativos do cliente podem enviar solicitações HTTP SOAP para o ponto de extremidade e para definir a autenticação e especificar portas.

  • ALTER ENDPOINT

    Use para adicionar, descartar ou modificar métodos ou alterar opções de ponto de extremidade.

  • DROP ENDPOINT

    Use para excluir pontos de extremidade indesejáveis ou obsoletos.

Permissões de ponto de extremidade e autenticação

Para criar, modificar ou descartar pontos de extremidade HTTP você deve ter permissões. O acesso aos pontos de extremidade requer autenticação. Estes requisitos são descritos nos tópicos a seguir:

Programação para a Web

Para expor procedimentos armazenados ou funções definidas pelo usuário, consulte o tópico a seguir:

Ambiente de execução padrão

Por padrão, as solicitações do HTTP SOAP aos XML Web Services Nativos no SQL Server são executadas de acordo com as configurações listadas na tabela a seguir.

  • SET ANSI_NULL_DFLT_ON ON
    Se o a opção padrão ANSI NULL para o banco de dados for FALSE, a nulidade padrão da nova coluna será substituída. Para obter mais informações, consulte SET ANSI_NULL_DFLT_ON (Transact-SQL).

  • SET QUOTED_IDENTIFIER ON
    Os identificadores podem ser delimitados por aspas duplas e literais devem ser delimitados por aspas simples. Para obter mais informações, consulte SET QUOTED_IDENTIFIER (Transact-SQL).

  • SET NUMERIC_ROUNDABORT OFF
    As perdas de precisão não geram mensagens de erro e o resultado é arredondado de acordo com a precisão da coluna ou variável que armazena o resultado. Para obter mais informações, consulte SET NUMERIC_ROUNDABORT (Transact-SQL).

  • SET ARITHABORT ON
    Se ocorrer um estouro ou divisão por zero durante a execução da consulta, a consulta ou o lote serão encerrados. Para obter mais informações, consulte SET ARITHABORT (Transact-SQL).

  • SET ANSI_WARNINGS ON
    Se valores nulos aparecerem em funções de agregação, como SUM ou AVG, uma mensagem de aviso será gerada. Para obter mais informações, consulte SET ANSI_WARNINGS (Transact-SQL).

  • SET ANSI_NULLS ON
    Comparações com um valor nulo que são executadas usando operadores iguais (=) ou não iguais (<>) são avaliadas para retornar FALSE. Para obter mais informações, consulte SET ANSI_NULLS (Transact-SQL).

  • SET CONCAT_NULL_YIELDS_NULL ON
    A concatenação de um valor nulo com uma cadeia de caracteres gera um resultado NULL. Para obter mais informações, consulte SET CONCAT_NULL_YIELDS_NULL (Transact-SQL).

  • SET ANSI_PADDING ON
    Para colunas que armazenam valores menores que o tamanho definido da coluna, os valores são convertidos. Para colunas com espaços em branco à direita nos dados char, varchar, binary e varbinary, os espaços em branco à direita ou zeros não são cortados. Para obter mais informações, consulte SET ANSI_PADDING (Transact-SQL).

  • SET CURSOR_CLOSE_ON_COMMIT ON
    Quando uma transação é confirmada ou revertida, os cursores abertos são fechados. Para obter mais informações, consulte SET CURSOR_CLOSE_ON_COMMIT (Transact-SQL).

  • SET IMPLICIT_TRANSACTIONS OFF
    Por padrão, transações em sessões do HTTP SOAP operarão em modo de confirmação automática, onde todas as instruções individuais são confirmadas se forem concluídas com êxito. Para obter mais informações, consulte SET IMPLICIT_TRANSACTIONS (Transact-SQL).

Considerações de failover de cluster para serviços HTTP SOAP

Na instalação do SQL Server, é uma boa prática usar uma conta de domínio como conta de serviço SQL e assegurar que a conta não tenha direitos administrativos completos no computador local. Fazer isso gera algumas implicações na configuração de um servidor SQL como servidor virtual em um cluster de Windows. As considerações estão na configuração dos serviços SQL HTTP-SOAP nativos.

O SQL Server aproveita o driver HTTP do Windows Server 2003 7.0. Este ouvinte de HTTP é criado para rotear solicitações para qualquer aplicativo que o assine na plataforma Windows, inclusive SQL Server e serviços de IIS. Para assinar esse serviço, os aplicativos precisam chamar as APIs de HTTP para reservar a URL raiz específica do aplicativo, também conhecida como namespace. Essa reserva avisa ao driver HTTP para rotear todas as solicitações subseqüentes dessa URL para o aplicativo assinado. A chamada para essas APIs do HTTP devem ocorrer sob contexto de uma conta com direitos administrativos locais do Windows. Começando com SQL Server 2005, estas chamadas são feitas usando um procedimento de armazenado especial chamado sp_reserve_http_namespaces (consulte Reservando um namespace HTTP para obter mais informações). Esse procedimento armazenado cria uma associação entre a URL raiz e a conta do serviço SQL para o roteamento do driver HTTP do Windows. Se a conta do serviço SQL não tiver direitos de administrador na máquina local, o procedimento armazenado deverá ser chamado usando uma conta de administrador local do Windows. Quando este namespace foi registrado, os pontos de extremidade do SQL SOAP podem ser criados sob aquela URL para o redirecionamento das solicitações de HTTP subseqüentes. Em uma configuração de cluster, esta reserva de namespace do HTTP deve ser estabelecida por um administrador de Windows local em cada um dos nós. Isto assegurará que o serviço HTTP ainda faça o roteamento das solicitações para um servidor SQL, se ocorrer um failover em qualquer um dos nós.

Outra consideração em failover de cluster com o SQL Server e HTTP-SOAP é na utilização dos certificados de criptografia para solicitações no canal SSL. Para obter mais informações, consulte Configurando um certificado para ser usado no SSL. Em um ambiente de cluster, a configuração de certificados precisa ser feita em cada um dos nós. O assunto para estes certificados deve ser definido como o nome totalmente qualificado do servidor virtual. Para assegurar que autenticação de Kerberos em HTTP seja configurada, consulte Registrando nomes da entidade de serviço Kerberos usando Http.sys, que também se aplica a clusters.