Reservando namespaces URL usando Http.sys

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.

Você pode reservar explicitamente um namespace URL em HTTP.SYS e depois usar esse namespace para criar pontos de extremidade HTTP. Para fazê-lo, é necessário entender o conceito de reserva de namespaces explícita e implícita, e como o SQL Server registra um ponto de extremidade HTTP com HTTP.SYS.

Reserva de namespaces explícita e implícita

Quando um usuário executa uma instrução CREATE ENDPOINT, como a seguinte:

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

O namespace http://MyServer:80/sql/AdvWorks é reservado implicitamente em HTTP.SYS. Isto significa que enquanto o aplicativo baseado no SQL Server está em execução, qualquer solicitação HTTP para este ponto de extremidade é encaminhada à instância do SQL Server. Porém, esse namespace pode ser utilizado por outros aplicativos, se a instância do SQL Server não estiver em execução.

Ao reservar um namespace explicitamente, o namespace é reservado especificamente para o SQL Server, e todas as solicitações HTTP para este ponto de extremidade são encaminhadas para a instância do SQL Server. Para obter mais informações, consulte Reservando um namespace HTTP.

ObservaçãoObservação

O Visual Studio 2005 e Http.sys seguem regras de conversão em formato canônico de URL diferentes. Por exemplo, Http.sys pode aceitar um curinga inclusivo, como "/SQL/Mypath/...", especificado como parte da configuração PATH quando um ponto de extremidade é criado. Entretanto, o Visual Studio 2005 tem regras de conversão em formato canônico mais rígidas e corta as informações "..." antes de transmitir a URL.

Como o SQL Server registra o ponto de extremidade

Para gerenciar pontos de extremidade HTTP, use CREATE ENDPOINT, ALTER ENDPOINT e DROP ENDPOINT. Você deve ter as permissões necessárias para criar, modificar ou descartar um ponto de extremidade. Isso está descrito no tópico Permissões de ponto de extremidade GRANT (Transact-SQL).

Ao executar CREATE ENDPOINT para criar um ponto de extremidade, o SQL Server executa a instrução e registra o ponto de extremidade com HTTP.SYS. Dependendo do contexto no qual a instrução de ponto de extremidade está especificada, o SQL Server representa o chamador, da seguinte maneira:

  • Se você executar a instrução no contexto de uma conta do Windows, o SQL Server representará o chamador para registrar o ponto de extremidade com HTTP.SYS.

  • Se você executar a instrução no contexto de uma conta do SQL Server, por exemplo, sa ou algum outro logon do SQL Server, o SQL Server representará o chamador usando a conta do SQL Server, especificada quando o SQL Server foi instalado, para registrar o ponto de extremidade com HTTP.SYS.

A conta do Windows e a conta do SQL Server que o SQL Server representa devem ter privilégios de administrador local do Windows para que o registro do ponto de extremidade HTTP tenha êxito.

Verificando reservas de namespace HTTP

Para determinar quais namespaces estão reservados em HTTP.SYS, execute o utilitário de configuração HTTP, Httpcfg.exe, no prompt de comando.

ObservaçãoObservação

O Httpcfg.exe é instalado como parte das ferramentas de suporte do Windows Server. Para obter mais informações, consulte Configurando o driver do modo kernel HTTP (Http.sys).

Segue um exemplo de uso do Httpcfg.exe para retornar a lista de namespaces HTTP reservados:

httpcfg query urlacl

Este comando exibirá uma lista de todas as reservas de namespaces existentes, retornando a URL do namespace o a conta na qual ele foi reservado.

Segue uma saída típica deste comando:

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)
-----------------------------------------------------------------
ObservaçãoObservação

Este procedimento pode ser executado somente por membros da função sysadmin e exige que a representação da conta tenha privilégios de administrador no computador.