Como criar um ponto de extremidade de espelhamento para a Autenticação do Windows (Transact-SQL)

Cada instância do servidor espelho de banco de dados requer uma porta do ouvinte exclusiva que é atribuída ao ponto de extremidade do espelhamento de banco de dados da instância. Uma instância do servidor só pode ter em um ponto de extremidade do espelhamento de banco de dados, que tem uma porta única. Um ponto de extremidade do espelhamento de banco de dados poderá usar qualquer porta que estiver disponível no sistema local quando o ponto de extremidade for criado. Todas as sessões de espelhamento de banco de dados em uma instância do servidor escutam aquela porta e todas as conexões que chegam para o espelhamento de banco de dados usam aquela porta.

Ao criar o ponto de extremidade, um administrador do sistema especifica os métodos de autenticação e de criptografia da instância do servidor.

Observação importanteImportante

Se um ponto de extremidade de espelhamento de banco de dados existir e já estiver em uso, nós recomendamos que você use aquele ponto de extremidade para toda sessão na instância do servidor. Descartando um ponto de extremidade em uso atrapalha o funcionamento das conexões das sessões existentes. Se uma testemunha foi definida para uma sessão, cancelar o ponto de extremidade de espelhamento de banco de dados pode fazer com que o servidor principal daquela sessão perca quorum; se isso acontecer, o banco de dados será colocado offline e seus usuários serão desconectados. Para obter mais informações, consulte Quorum: como uma testemunha afeta a disponibilidade do banco de dados.

Para criar um ponto de extremidade de espelhamento para a Autenticação do Windows

  1. Conecte-se à instância do servidor para a qual você deseja criar um ponto de extremidade de espelhamento de banco de dados.

  2. Determine se um ponto de extremidade de espelhamento de banco de dados já existe usando a seguinte instrução:

    SELECT name, role_desc, state_desc FROM sys.database_mirroring_endpoints 
    
    Observação importanteImportante

    Se um ponto de extremidade do espelhamento de banco de dados já existir para a instância do servidor, use aquele ponto de extremidade para qualquer outra sessão que você estabelecer na instância do servidor.

  3. Para usar o Transact-SQL para criar um ponto de extremidade para ser usado com a Autenticação do Windows, use uma instrução CREATE ENDPOINT. A instrução leva o seguinte formato geral:

    CREATE ENDPOINT <endpointName>

    STATE=STARTED

    AS TCP (LISTENER_PORT = <listenerPortList> )

    FOR DATABASE_MIRRORING

        (

    [AUTHENTICATION = WINDOWS [ <authorizationMethod> ]

            ]

            [ [[ [,] ENCRYPTION = REQUIRED

    [ ALGORITHM { <algorithm> } ]

            ]

            [,] ROLE = <role>

        )

    onde

    • <endpointName> é um nome exclusivo para o ponto de extremidade do espelhamento de banco de dados da instância do servidor.

    • STARTED especifica que o ponto de extremidade deve ser iniciado e começar a escutar conexões. Um ponto de extremidade do espelhamento de banco de dados é normalmente criado no estado STARTED. Alternativamente, você pode iniciar uma sessão em um estado STOPPED (o padrão) ou no estado DISABLED.

    • <listenerPortList> é um número da porta único (nnnn) no qual você deseja que o servidor escute mensagens de espelhamento de banco de dados. Só o TCP é permitido; se qualquer outro protocolo for especificado causará um erro.

      Um número de porta só pode ser usado uma vez por um sistema de computador. Um ponto de extremidade do espelhamento de banco de dados poderá usar qualquer porta que estiver disponível no sistema local quando o ponto de extremidade for criado. Para identificar as portas que estão sendo usadas atualmente pelos pontos de extremidade de TCP no sistema, use a seguinte instrução Transact-SQL:

      SELECT name, port FROM sys.tcp_endpoints
      
      Observação importanteImportante

      Cada instância do servidor requer uma e apenas uma porta do ouvinte exclusiva.

    • Para a Autenticação do Windows, a opção AUTHENTICATION é opcional, a menos que você queira o que o ponto de extremidade use somente NTLM ou Kerberos para autenticar conexões. O <authorizationMethod> especifica o método usado para autenticar conexões como um dos seguintes: NTLM, KERBEROS ou NEGOTIATE. O padrão, NEGOTIATE, faz o ponto de extremidade usar o protocolo de negociação Windows para escolher NTLM ou Kerberos. A negociação habilita conexões com ou sem autenticação, dependendo do nível de autenticação do ponto de extremidade oposto. Para obter mais informações sobre esses métodos, consulte Tipos de autenticação de ponto de extremidade.

    • ENCRYPTION é definido como REQUIRED por padrão. Isso especifica que todas as conexões para esse ponto de extremidade devem usar criptografia. Porém, você pode desabilitar a criptografia ou deixá-la opcional em um ponto de extremidade. As alternativas são como segue:

      Valor

      Definição

      DISABLED

      Especifica que os dados enviados em uma conexão não estão criptografados.

      SUPPORTED

      Especifica que os dados só serão criptografados se o ponto de extremidade oposto especificar SUPPORTED ou REQUIRED.

      REQUIRED

      Especifica que os dados enviados em uma conexão devem ser criptografados.

      Se um ponto de extremidade requisitar criptografia, o outro ponto de extremidade deve ter ENCRYPTION definido como SUPPORTED ou REQUIRED.

    • <algorithm> fornece a opção de especificar os padrões de criptografia para o ponto de extremidade. O valor de <algorithm> pode ser um dos seguintes algoritmos ou combinações de algoritmos: RC4, AES, AES RC4 ou RC4 AES.

      AES RC4 especifica que esse ponto de extremidade negociará um algoritmo de criptografia, dando preferência ao algoritmo AES. RC4 AES especifica que esse ponto de extremidade negociará um algoritmo de criptografia, dando preferência ao algoritmo RC4. Se ambos os pontos de extremidade especificarem ambos os algoritmos, mas em ordens diferentes, vencerá o ponto de extremidade que aceitar a conexão.

      ObservaçãoObservação

      Embora consideravelmente mais rápido que o AES, o RC4 é um algoritmo relativamente fraco, enquanto o AES é um algoritmo relativamente forte. Portanto, nós recomendamos que você use o algoritmo AES.

    • <role> define a função ou as funções que o servidor pode executar. Especificar ROLE é necessário.

      Para permitir que uma instância do servidor sirva como uma função em uma sessão de espelhamento de banco de dados e uma função diferente em outra sessão, especifique ROLE=ALL. Para restringir uma instância do servidor como sendo um parceiro ou uma testemunha, especifique ROLE=PARTNER ou ROLE=WITNESS, respectivamente.

      ObservaçãoObservação

      Para o SQL Server Express, WITNESS é a única opção disponível.

    Para obter uma descrição completa da sintaxe CREATE ENDPOINT, consulte CREATE ENDPOINT (Transact-SQL).

    ObservaçãoObservação

    Para alterar um ponto de extremidade existente, use ALTER ENDPOINT (Transact-SQL).

Exemplo

O exemplo a seguir cria pontos de extremidade para as instâncias de servidor padrão em três sistemas de computador separados:

Função da instância de servidor

Nome do computador host

Parceiro (inicialmente na função principal)

SQLHOST01\.

Parceiro (inicialmente na função espelho)

SQLHOST02\.

Testemunha

SQLHOST03\.

Neste exemplo, todos os três pontos de extremidade usam o número da porta 7022, entretanto qualquer número de porta disponível funcionaria. A opção AUTHENTICATION é desnecessária, porque os pontos de extremidade usam o tipo padrão, Autenticação do Windows. A opção ENCRYPTION também é desnecessária, porque todos os pontos de extremidade são feitos para negociar o método de autenticação de uma conexão, que é o comportamento padrão para a Autenticação do Windows. Também, todos os pontos de extremidade requerem a criptografia, que é o comportamento padrão.

Toda instância do servidor está limitada para servir como parceiro ou testemunha, e o ponto de extremidade de cada servidor especifica expressamente qual a função (ROLE=PARTNER ou ROLE=WITNESS).

Observação importanteImportante

Cada instância do servidor só pode ter um ponto de extremidade. Então, se você quiser que uma instância do servidor seja parceiro em algumas sessões e testemunha em outras, especifique ROLE=ALL.

--Endpoint for initial principal server instance, which
--is the only server instance running on SQLHOST01.
CREATE ENDPOINT endpoint_mirroring
    STATE = STARTED
    AS TCP ( LISTENER_PORT = 7022 )
    FOR DATABASE_MIRRORING (ROLE=PARTNER);
GO
--Endpoint for initial mirror server instance, which
--is the only server instance running on SQLHOST02.
CREATE ENDPOINT endpoint_mirroring
    STATE = STARTED
    AS TCP ( LISTENER_PORT = 7022 )
    FOR DATABASE_MIRRORING (ROLE=PARTNER);
GO
--Endpoint for witness server instance, which
--is the only server instance running on SQLHOST03.
CREATE ENDPOINT endpoint_mirroring
    STATE = STARTED
    AS TCP ( LISTENER_PORT = 7022 )
    FOR DATABASE_MIRRORING (ROLE=WITNESS);
GO

Para obter um exemplo completo de como mostrar uma configuração de segurança, preparar o banco de dados espelho, configurar os parceiros e adicionar uma testemunha, consulte Configurando espelhamento de banco de dados.