Procedura: Creazione di un endpoint del mirroring per l'autenticazione Windows (Transact-SQL)

In ogni istanza del server di mirroring del database è necessaria una porta di attesa univoca assegnata all'endpoint del mirroring del database dell'istanza. Un'istanza del server può includere un solo endpoint, che a sua volta dispone di una sola porta. Un endpoint del mirroring del database può utilizzare qualsiasi porta disponibile nel sistema locale al momento della creazione dell'endpoint. Tutte le sessioni di mirroring del database su un'istanza del server sono in attesa su tale porta e tutte le connessioni in ingresso per il mirroring del database utilizzano tale porta.

Durante la creazione dell'endpoint, l'amministratore del sistema specifica i metodi di autenticazione e crittografia dell'istanza del server.

Nota importanteImportante

Se un endpoint di mirroring del database è presente e già in uso, è consigliabile utilizzarlo per ogni sessione sull'istanza del server. L'eliminazione di un endpoint in uso determina la chiusura di tutte le connessioni delle sessioni esistenti. Se un server di controllo del mirroring è stato impostato per una sessione, l'eliminazione dell'endpoint del mirroring del database può determinare la perdita del quorum da parte del server principale della sessione. Se questo si verifica, il database viene portato fuori linea e i suoi utenti vengono disconnessi. Per ulteriori informazioni, vedere Quorum: Impatto di un server di controllo del mirroring sulla disponibilità del database.

Per creare un endpoint del mirroring tramite l'autenticazione di Windows

  1. Connettersi all'istanza del server per la quale creare un endpoint del mirroring del database.

  2. Per determinare se esiste già un endpoint del mirroring del database, utilizzare l'istruzione seguente:

    SELECT name, role_desc, state_desc FROM sys.database_mirroring_endpoints 
    
    Nota importanteImportante

    Se per l'istanza del server esiste già un endpoint del mirroring, utilizzarlo per tutte le altre sessioni stabilite nell'istanza del server.

  3. Per creare un endpoint utilizzabile con l'autenticazione di Windows, eseguire un'istruzione Transact-SQL CREATE ENDPOINT, il cui formato è simile a quello dell'esempio seguente:

    CREATE ENDPOINT <endpointName>

        STATE=STARTED

        AS TCP ( LISTENER_PORT = <listenerPortList> )

        FOR DATABASE_MIRRORING

        (

            [ AUTHENTICATION = WINDOWS [ <authorizationMethod> ]

            ]

            [ [,] ENCRYPTION = REQUIRED

                    [ ALGORITHM { <algorithm> } ]

            ]

            [,] ROLE = <role>

        )

    dove

    • <endpointName> è un nome univoco per l'endpoint del mirroring del database dell'istanza del server.

    • STARTED indica che l'endpoint deve essere avviato e deve rimanere in attesa delle connessioni. Lo stato di un endpoint del mirroring del database creato è in genere STARTED. In alternativa, è possibile avviare una sessione nello stato STOPPED (impostazione predefinita) o DISABLED.

    • <listenerPortList> è un solo numero di porta (nnnn) su cui il server deve attendere i messaggi di mirroring del database. È consentito solo il protocollo TCP. Tutti gli altri protocolli restituiranno un errore.

      È possibile utilizzare un numero di porta una sola volta per ciascun computer. Un endpoint del mirroring del database può utilizzare qualsiasi porta disponibile nel sistema locale al momento della creazione dell'endpoint. Per identificare le porte attualmente utilizzate dagli endpoint TCP nel sistema, utilizzare l'istruzione Transact-SQL seguente:

      SELECT name, port FROM sys.tcp_endpoints
      
      Nota importanteImportante

      In ogni istanza del server è necessaria un'unica porta di attesa univoca.

    • Ai fini dell'autenticazione Windows l'opzione AUTHENTICATION è facoltativa a meno che non si desideri che l'endpoint utilizzi solo NTLM o Kerberos per l'autenticazione delle connessioni. <authorizationMethod> consente di indicare il metodo utilizzato per l'autenticazione delle connessioni tra NTLM, KERBEROS o NEGOTIATE. Con il metodo predefinito NEGOTIATE l'endpoint utilizzerà il protocollo di negoziazione di Windows per scegliere tra NTLM e Kerberos. La negoziazione consente di utilizzare le connessioni con o senza autenticazione, a seconda del livello di autenticazione dell'endpoint opposto. Per ulteriori informazioni su questi metodi, vedere Tipi di autenticazione dell'endpoint.

    • Per impostazione predefinita, ENCRYPTION è impostato su REQUIRED, pertanto verrà utilizzata la crittografia per tutte le connessioni a questo endpoint. È tuttavia possibile disattivare la crittografia o renderla facoltativa in un endpoint. Sono disponibili le alternative seguenti:

      Valore

      Definizione

      DISABLED

      Specifica che i dati inviati tramite una connessione non sono crittografati.

      SUPPORTED

      Specifica che i dati vengono crittografati solo se per l'endpoint opposto è stato specificata l'opzione SUPPORTED o REQUIRED.

      REQUIRED

      Specifica che i dati inviati tramite una connessione devono essere crittografati.

      Se la crittografia è necessaria per un endpoint, ENCRYPTION deve essere impostato su SUPPORTED o REQUIRED nell'altro endpoint.

    • <algorithm> consente di specificare gli standard di crittografia per l'endpoint. Il valore di <algorithm> può essere uno degli algoritmi o delle combinazioni di algoritmi seguenti: RC4, AES, AES RC4 o RC4 AES.

      AES RC4 indica che questo endpoint negozierà l'algoritmo di crittografia, dando la preferenza a quello AES. RC4 AES indica che questo endpoint negozierà l'algoritmo di crittografia, dando la preferenza all'algoritmo RC4. Se negli endpoint vengono specificati entrambi gli algoritmi in ordini diversi, prevarrà quello che accetta la connessione.

      Nota

      Sebbene notevolmente più veloce rispetto all'algoritmo AES, l'algoritmo RC4 è relativamente vulnerabile, mentre AES è relativamente avanzato. È quindi consigliabile utilizzare l'algoritmo AES.

    • <role> consente di definire il ruolo o i ruoli che il server è in grado di eseguire. Il valore di ROLE deve essere specificato.

      Per consentire a un'istanza del server di utilizzare un ruolo per una sessione di mirroring del database e un altro ruolo per un'altra sessione, specificare ROLE=ALL. Per limitare un'istanza del server in modo che funga da partner o da server di controllo del mirroring, specificare rispettivamente ROLE=PARTNER o ROLE=WITNESS.

      Nota

      In SQL Server Express l'unica opzione disponibile è WITNESS.

    Per una descrizione completa della sintassi di CREATE ENDPOINT, vedere CREATE ENDPOINT (Transact-SQL).

    Nota

    Per modificare un endpoint esistente, utilizzare ALTER ENDPOINT (Transact-SQL).

Esempio

Nell'esempio seguente vengono creati endpoint per le istanze del server predefinite su tre sistemi di computer distinti:

Ruolo dell'istanza del server

Nome del computer host

Partner (inizialmente nel ruolo principale)

SQLHOST01\.

Partner (inizialmente nel ruolo mirror)

SQLHOST02\.

Server di controllo

SQLHOST03\.

Nell'esempio tutti e tre gli endpoint utilizzano la porta numero 7022, anche se qualunque numero di porta disponibile sarebbe utilizzabile. L'opzione AUTHENTICATION non è necessaria, in quanto gli endpoint utilizzano il tipo predefinito, autenticazione di Windows. L'opzione ENCRYPTION è anch'essa superflua, in quanto gli endpoint sono tutti progettati per negoziare il metodo di autenticazione per una connessione, che rappresenta il comportamento predefinito per autenticazione di Windows. Inoltre, tutti gli endpoint richiedono la crittografia, che rappresenta il comportamento predefinito.

Ogni istanza del server è limitata a fungere da partner o da server di controllo e l'endpoint di ogni server specifica espressamente il ruolo (ROLE=PARTNER o ROLE=WITNESS).

Nota importanteImportante

Ogni istanza del server può includere un solo endpoint. Pertanto, se si desidera che un'istanza del server sia partner in alcune sessioni e server di controllo in altre, specificare 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

Per un esempio completo sulla configurazione della protezione, la preparazione del database mirror, la configurazione dei partner e l'aggiunta di un server di controllo del mirroring, vedere Impostazione del mirroring del database.