Protocolos de rede e pontos de extremidade TDS

Quando o Mecanismo de banco de dados do SQL Server se comunica com um aplicativo, ele formata a comunicação em um formato de comunicação Microsoft denominado pacote TDS (protocolo). A camada de protocolo de rede SNI ( SQL Server Network Interface), que substitui as Net-Libraries no SQL Server 2000 e MDAC (Microsoft Data Access Components), encapsula o pacote TDS dentro de um protocolo de comunicação padrão, como TCP/IP ou pipes nomeados. A camada de protocolo SNI é comum ao Mecanismo de Banco de Dados e SQL Server Native Client. A camada de protocolo SNI não é configurada diretamente. Em vez disso, o servidor e o SQL Server Native Client são configurados para usar um protocolo de rede. Então, o Mecanismo de Banco de Dados e SQL Server Native Client usam as configurações de protocolo apropriadas automaticamente. O servidor cria um objeto SQL Server denominado como ponto de extremidade de TDS para cada protocolo de rede. No servidor, os pontos de extremidade TDS são instalados pelo SQL Server durante a instalação do SQL Server.

Este tópico descreve como o servidor cria e usa pontos de extremidade TDS. Para obter mais informações sobre como configurar o servidor, consulte Configurando protocolos de rede de servidor e Net-Libraries.

No computador cliente, o SQL Server Native Client deve ser instalado e configurado para usar um protocolo de rede habilitado no servidor. Para obter mais informações sobre clientes, consulte Configurando protocolos de rede de cliente.

Habilitando protocolos de servidor após a instalação

Os protocolos de rede de sistema operacional subjacente (como TCP/IP) já devem estar instalados no cliente e no servidor. Geralmente, os protocolos de rede são instalados durante a instalação do Windows; eles não fazem parte da instalação do SQL Server. Se o protocolo de rede exigido não estiver disponível e configurado no servidor, o Mecanismo de Banco de Dados não será iniciado. Se o protocolo de rede exigido não estiver disponível e configurado no cliente, o Network Library não funcionará.

ObservaçãoObservação

No restante deste tópico, "habilitar um protocolo" significa habilitar o protocolo para o SQL Server, não para o sistema operacional.

Os protocolos de rede necessários para se comunicar com o SQL Server de outro computador frequentemente não são habilitados para o SQL Server durante a instalação. Para fazer a conexão de um computador cliente, portanto, talvez você precise habilitar o TCP/IP, os pipes nomeados ou o protocolo VIA . (O protocolo de memória compartilhada é habilitado por padrão em todas as instalações, mas só pode ser usado para conexão com o Mecanismo de Banco de Dados de um aplicativo cliente no mesmo computador.) Para obter informações sobre quais protocolos de rede estão habilitados para seu tipo de instalação, consulte Configuração de rede padrão do SQL Server.

Para habilitar os protocolos de rede, use o SQL Server Configuration Manager. Alternativamente, os protocolos podem ser ativados durante a instalação usando opções no prompt de comando. Para obter mais informações, consulte Como instalar o SQL Server 2008 R2 do prompt de comando.

Depois que as conexões de rede forem instaladas e configuradas, o SQL Server poderá efetuar a escuta em qualquer combinação de protocolos de rede simultaneamente.

Pontos de extremidade TDS definidos

Um ponto de extremidade TDS é o objeto SQL Server que representa o ponto de comunicação entre o SQL Server e um cliente. O SQL Server cria automaticamente um ponto de extremidade para cada um dos quatro protocolos com suporte no SQL Server. Por padrão, todos os usuários têm acesso a eles quando os protocolos são habilitados. Se um protocolo de rede não estiver habilitado, o ponto de extremidade ainda existirá, mas não poderá ser usado. Um ponto de extremidade adicional é criado para a conexão de administrador dedicada (DAC), que só poderá ser usado por membros da função de servidor fixa sysadmin.

O SQL Server gera um nome exclusivo para cada ponto de extremidade TDS. Os pontos de extremidade criados automaticamente são mostrados na tabela a seguir.

Finalidade

Nome do ponto de extremidade

Memória compartilhada

TSQL LocalMachine

Pipes nomeados

TSQL Named Pipes

TCP/IP

TSQL Default TCP

VIA

TSQL Default VIA

DAC

Dedicated Admin Connection

HTTP

HyperText Transport Protocol

Para os pipes nomeados e os protocolos de memória compartilhada, só pode haver um ponto de extremidade por instância. Não há pontos de extremidade configuráveis para esses tipos de protocolo. Para TCP/IP e VIA, há um ponto de extremidade padrão, mas podem ser criados pontos de extremidade adicionais. Os pontos de extremidade HTTP também são criados pelo usuário e não aparecem no SQL Server Configuration Manager.

Observação importanteImportante

O protocolo VIA foi preterido. 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.

Somente o proprietário e o estado nos pontos de extremidade do sistema podem ser alterados (usando ALTER ENDPOINT). Você não pode desabilitar os pontos de extremidade padrão, mas pode pará-los e iniciá-los. Um ponto de extremidade interrompido ainda efetua a escuta, mas rejeita e fecha novas conexões.

ObservaçãoObservação

Por padrão, os clientes são configurados para tentar todos os protocolos até que um deles funcione. Se o protocolo TCP/IP estiver desabilitado, os clientes continuarão com o próximo protocolo. Se o TCP/IP estiver habilitado, mas o ponto de extremidade for interrompido, a tentativa de conexão não será rejeitada, portanto, o cliente não tentará outros protocolos, mas a conexão interrompida não poderá ser usada. Nesse caso, você deve se conectar explicitamente a um ponto de extremidade ativo.

Portas de TCP dinâmicas geralmente se conectam ao ponto de extremidade TCP padrão.

Configurações de protocolo no registro

As configurações para os pontos de extremidade TDS são gravadas no registro. Os usuários devem usar as instruções Transact-SQL para criar ou alterar pontos de extremidade e usar o SQL Server Configuration Manager para habilitar ou desabilitar protocolos, que iniciam e interrompem os pontos de extremidade.

Quando o usuário altera configurações de protocolo no registro, nada acontece. O registro está separado dos metadados.

Associando uma conexão de usuário a um ponto de extremidade

Ao se conectar ao Mecanismo de Banco de Dados, o SQL Server associa a conexão com um ponto de extremidade específico e avalia se o logon de conexão tem permissão para usar o ponto de extremidade. Conexões são associadas como segue:

  • Conexões de memória compartilhadas usam o ponto de extremidade TSQL LocalMachine.

  • Conexões de pipes nomeados usam o ponto de extremidade Pipes Nomeados TSQL.

  • Conexões de administrador dedicadas usam o ponto de extremidade Conexão Admin Dedicada.

  • Por padrão, conexões TCP usam o ponto de extremidade TCP Padrão TSQL. Se um novo ponto de extremidade TCP (definido pelo usuário) for criado para uma porta TCP específica, as conexões com aquela porta TCP serão feitas com o novo ponto de extremidade. Se um novo ponto de extremidade TCP/TSQL for criado usando IP_ANY como porta, as conexões TCP serão realizadas com o novo ponto de extremidade.

  • Conexões de VIA são tratadas do mesmo modo que as conexões TCP.

Os pontos de extremidade definidos pelo usuário se comportam do mesmo modo que os pontos de extremidade padrão. Quando um ponto de extremidade é criado para um endereço IP (ou para todos os endereços IP usando IP_ANY) ou para uma porta TCP específica, os usuários recebem permissão para conexão com o ponto de extremidade em um processo chamado configuração. Eles retêm a configuração, sem considerar se o servidor está de fato na escuta na combinação de endereço IP/porta TCP. Uma conexão com um endereço IP e porta TCP é comparada a um ponto de extremidade na seguinte ordem:

  1. Se o endereço IP e a porta TCP corresponderem exatamente ao endereço IP e à porta TCP de um ponto de extremidade, o ponto de extremidade será usado.

  2. Se não houver correspondência exata, a porta TCP será verificada em todos os pontos de extremidade IP_ANY e se houver escuta na porta TCP, esse ponto de extremidade será usado.

  3. Se houver correspondência exata de porta, o ponto de extremidade TCP padrão será usado.

O processo de associação de conexão sempre resulta na seleção de no máximo um único ponto de extremidade. A permissão para conexão é verificada para aquele ponto de extremidade. Se o usuário não tiver permissão para aquele ponto de extremidade, o processo não procurará o próximo ponto de extremidade.

Exemplos: associar conexões de usuário a pontos de extremidade

O exemplo a seguir mostra como o endereço IP e a porta TCP são usados para selecionar um ponto de extremidade. Suponha que o servidor é configurado para escuta nos seguintes endereços IP e portas TCP:

127.0.0.1:1533

Suponha ainda que os seguintes pontos de extremidade TCP são estabelecidos:

Nome do ponto de extremidade

Valores configurados

Loopback

LISTENER_IP= 127.0.0.1 e LISTENER_PORT = 1533

Remote

LISTENER_IP = ALL e LISTENER_PORT = 1533

TSQL Default TCP

Não vinculado a qualquer endereço IP ou porta

Existem três possibilidades de conexão:

  • Se um cliente realizar uma conexão TCP com 127.0.0.1:1533, o ponto de extremidade associado à sessão será o ponto de extremidade Loopback, porque existe uma correspondência exata de endereço IP e porta TCP com o ponto de extremidade Loopback.

  • Se um cliente realizar uma conexão TCP com 251.40.20.151:1533, não haverá uma correspondência exata do endereço IP e da porta TCP com um ponto de extremidade, mas Remote estará disponível para a conexão porque Remote efetua a escuta em qualquer endereço IP e porta 1533. Se o logon de conexão não tiver permissão para o ponto de extremidade Remote, o processo falhará. Ele não tenta conexão com outros pontos de extremidade possíveis, como TCP Padrão TSQL, para o qual o logon pode ter permissão.

  • Se um cliente fizer uma conexão TCP com 251.40.20.151:1433, não haverá correspondência exata do endereço IP e porta TCP com um ponto de extremidade, não haverá correspondência da porta TCP 1533 com nenhum endereço IP, mas TCP Padrão TSQL estará disponível para a conexão porque TCP Padrão TSQL efetua escuta em qualquer endereço IP e em qualquer porta.

Atualização e/ou instalação

Por padrão, todos os usuários têm acesso aos pontos de extremidade TDS (menos o ponto de extremidade de conexão de administrador dedicada). Como esses pontos de extremidade são criados internamente pelo servidor, eles não têm proprietário e você pode associá-los a uma conta específica.

Gerenciando pontos de extremidade com Transact-SQL

Os pontos de extremidade são criados e gerenciados usando Transact-SQL. Eles são criados e descartados com as instruções CREATE ENDPOINT e DROP ENDPOINT. Há também instruções para controlar, alterar e assumir propriedade de pontos de extremidade.

Para se conectar a uma instância do SQL Server usando pontos de extremidade Transact-SQL, os usuários devem ter permissão CONNECT para um ponto de extremidade e permissão global no SQL Server para logon. A permissão de conexão com pontos de extremidade padrão é implicitamente concedida aos usuários quando os logons são criados. O acesso a pontos de extremidade é gerenciado com GRANT | DENY | REVOKE CONNECT ON ENDPOINT.

Quando um novo ponto de extremidade TCP é criado, o SQL Server revoga todas as permissões existentes automaticamente no ponto de extremidade TCP Padrão TSQL. Para obter um exemplo de como criar um novo ponto de extremidade TCP, consulte Como configurar o Mecanismo de Banco de Dados para efetuar a escuta em várias portas TCP.

  • Para restringir o acesso a um ponto de extremidade, o administrador pode negar permissão ao grupo EVERYONE (usando a instrução DENY CONNECT) e conceder permissão a indivíduos específicos ou funções (usando a instrução GRANT CONNECT ).

  • Para retornar permissões ao estado original, use GRANT CONNECT para o grupo PUBLIC .

  • Para fornecer um ponto de extremidade a um aplicativo específico, use DENY CONNECT para todos os usuários, exceto para usuários desse aplicativo.

Observação sobre segurançaObservação sobre segurança

A autorização para usar um ponto de extremidade é associada ao nome do ponto de extremidade. Se um nome de ponto de extremidade for alterado, as restrições de segurança (por exemplo, instruções DENY CONNECT ) não serão mais aplicadas corretamente. O nome de um ponto de extremidade é alterado quando a porta é alterada. Se o SQL Server efetuar a escuta em portas dinâmicas, a porta poderá ser alterada alterando o nome do ponto de extremidade e descartando as permissões do ponto de extremidade associado. Para evitar esse risco de segurança, não defina permissões personalizadas em pontos de extremidade associados a portas dinâmicas e não altere a ordem na qual um ponto de extremidade TCP/IP ocorre no registro.

Para mais informações sobre como definir segurança de pontos de extremidade, consulte Permissões de ponto de extremidade GRANT (Transact-SQL).