CREATE ENDPOINT (Transact-SQL)

Si applica a:SQL Server

Crea gli endpoint e ne definisce le proprietà, inclusi i metodi disponibili alle applicazioni client. Per altre informazioni relative alle autorizzazioni, vedere GRANT - autorizzazioni per endpoint (Transact-SQL).

La sintassi di CREATE ENDPOINT può essere logicamente suddivisa in due parti:

  • La prima parte inizia con AS e termina prima della clausola FOR.

    In questa parte vengono fornite informazioni specifiche del protocollo di trasporto TCP e viene impostato un numero di porta di attesa per l'endpoint, nonché il metodo di autenticazione dell'endpoint e/o l'elenco degli eventuali indirizzi IP che si desidera escludere dall'accesso all'endpoint.

  • La seconda parte inizia dalla clausola FOR.

    In questa parte viene definito il payload supportato dall'endpoint. Il payload può essere uno dei diversi tipi supportati: Transact-SQL, Service Broker e mirroring del database. In questa parte è inoltre possibile includere informazioni specifiche della lingua.

Nota

I servizi Web XML nativi (endpoint SOAP/HTTP) sono stati rimossi in SQL Server 2012 (11.x).

Convenzioni di sintassi Transact-SQL

Sintassi

CREATE ENDPOINT endPointName [ AUTHORIZATION login ]  
[ STATE = { STARTED | STOPPED | DISABLED } ]  
AS { TCP } (  
   <protocol_specific_arguments>  
        )  
FOR { TSQL | SERVICE_BROKER | DATABASE_MIRRORING } (  
   <language_specific_arguments>  
        )  
  
<AS TCP_protocol_specific_arguments> ::=  
AS TCP (  
  LISTENER_PORT = listenerPort  
  [ [ , ] LISTENER_IP = ALL | ( xx.xx.xx.xx IPv4 address ) | ( '__:__1' IPv6 address ) ]  
  
)  
  
<FOR SERVICE_BROKER_language_specific_arguments> ::=  
FOR SERVICE_BROKER (  
   [ AUTHENTICATION = {   
            WINDOWS [ { NTLM | KERBEROS | NEGOTIATE } ]   
      | CERTIFICATE certificate_name   
      | WINDOWS [ { NTLM | KERBEROS | NEGOTIATE } ] CERTIFICATE certificate_name   
      | CERTIFICATE certificate_name WINDOWS [ { NTLM | KERBEROS | NEGOTIATE } ]   
    } ]  
   [ [ , ] ENCRYPTION = { DISABLED | { { SUPPORTED | REQUIRED }   
       [ ALGORITHM { AES | RC4 | AES RC4 | RC4 AES } ] }   
   ]  
   [ [ , ] MESSAGE_FORWARDING = { ENABLED | DISABLED } ]  
   [ [ , ] MESSAGE_FORWARD_SIZE = forward_size ]  
)  
  

<FOR DATABASE_MIRRORING_language_specific_arguments> ::=  
FOR DATABASE_MIRRORING (  
   [ AUTHENTICATION = {   
            WINDOWS [ { NTLM | KERBEROS | NEGOTIATE } ]   
      | CERTIFICATE certificate_name   
      | WINDOWS [ { NTLM | KERBEROS | NEGOTIATE } ] CERTIFICATE certificate_name   
      | CERTIFICATE certificate_name WINDOWS [ { NTLM | KERBEROS | NEGOTIATE } ]   
   [ [ [ , ] ] ENCRYPTION = { DISABLED | { { SUPPORTED | REQUIRED }   
       [ ALGORITHM { AES | RC4 | AES RC4 | RC4 AES } ] }   
  
    ]   
   [ , ] ROLE = { WITNESS | PARTNER | ALL }  
)  

Nota

Per visualizzare la sintassi Transact-SQL per SQL Server 2014 (12.x) e versioni precedenti, vedere la documentazione delle versioni precedenti.

Argomenti

endPointName
Nome assegnato per l'endpoint in fase di creazione. Utilizzare questo nome in caso di aggiornamento o eliminazione dell'endpoint.

AUTHORIZATION login
Specifica un account di accesso di SQL Server o di Windows valido a cui viene assegnata la proprietà del nuovo oggetto endpoint creato. Se si omette AUTHORIZATION, per impostazione predefinita il chiamante diventerà il proprietario del nuovo oggetto creato.

Per assegnare la proprietà tramite AUTHORIZATION, il chiamante deve avere l'autorizzazione IMPERSONATE per l'account di accesso login specificato.

L'opzione AUTHORIZATION non è disponibile in ALTER ENDPOINT. La proprietà può essere assegnata solo quando l'endpoint viene creato. Per riassegnare la proprietà, vedere DROP ENDPOINT (Transact-SQL) e quindi tornare a questo articolo per ricreare l'endpoint.

STATE = { STARTED | STOPPED | DISABLED }
Stato dell'endpoint al momento della creazione. Se durante la procedura di creazione non viene specificato uno stato, per impostazione predefinita verrà utilizzato STOPPED.

STARTED
L'endpoint viene avviato ed è attivamente in attesa di connessioni.

DISABLED
L'endpoint è disabilitato. In questo stato, tramite il server vengono attese le richieste della porta, ma anche restituiti errori ai client.

STOPPED
L'endpoint è arrestato. In questo stato, tramite il server non vengono attese le richieste della porta dell'endpoint né viene fornita una risposta ai tentativi di richiesta di utilizzare l'endpoint.

Per cambiare lo stato, usare ALTER ENDPOINT (Transact-SQL).

AS { TCP }
Viene specificato il protocollo di trasporto da utilizzare.

FOR { TSQL | SERVICE_BROKER | DATABASE_MIRRORING }
Specifica il tipo di payload.

Attualmente non sono presenti argomenti specifici del linguaggio Transact-SQL da passare nel parametro <language_specific_arguments>.

Opzione TCP

I seguenti argomenti sono validi solo per l'opzione TCP.

LISTENER_PORT =listenerPort
Specifica il numero della porta della quale il protocollo TCP/IP di Service Broker è in attesa delle connessioni. Per convenzione, viene usato 5022, ma qualsiasi numero compreso tra 1024 e 32767 è valido.

LISTENER_IP = ALL | (4-part-ip) | ( "ip_address_v6" )
Specifica l'indirizzo IP in corrispondenza del quale verrà eseguita l'attesa dell'endpoint. Il valore predefinito è ALL. Ciò significa che il listener accetterà una connessione su qualsiasi indirizzo IP valido.

Se si configura il mirroring del database con un indirizzo IP anziché con un nome di dominio completo (ALTER DATABASE SET PARTNER = partner_IP_address o ALTER DATABASE SET WITNESS = witness_IP_address), è necessario specificare LISTENER_IP =IP_address anziché LISTENER_IP=ALL quando si creano gli endpoint del mirroring.

Opzioni SERVICE_BROKER e DATABASE_MIRRORING

Gli argomenti AUTHENTICATION e ENCRYPTION di seguito descritti sono comuni alle opzioni SERVICE_BROKER e DATABASE_MIRRORING.

Nota

Per le opzioni specifiche per SERVICE_BROKER, vedere "Opzioni di SERVICE_BROKER" di seguito in questo argomento. Per le opzioni specifiche per DATABASE_MIRRORING, vedere "Opzioni di DATABASE_MIRRORING" di seguito in questo argomento.

AUTHENTICATION =<authentication_options>
Specifica i requisiti di autenticazione TCP/IP per le connessioni per questo endpoint. Il valore predefinito è WINDOWS.

I metodi di autenticazione supportati includono NTLM o Kerberos oppure entrambi.

Importante

Tutte le connessioni per il mirroring in un'istanza del server utilizzano un singolo endpoint del mirroring del database. Qualsiasi tentativo di creare un endpoint del mirroring del database aggiuntivo avrà esito negativo.

<authentication_options> ::=

WINDOWS [ { NTLM | KERBEROS | NEGOTIATE } ]
Specifica che l'endpoint deve connettersi utilizzando il protocollo di autenticazione di Windows per autenticare gli endpoint Si tratta dell'impostazione predefinita.

Se si specifica un metodo di autenticazione (NTLM o KERBEROS), il metodo specificato viene utilizzato sempre come protocollo di autenticazione. Il valore predefinito NEGOTIATE imposta l'utilizzo da parte dell'endpoint di uno dei protocolli di negoziazione di Windows (NTLM o Kerberos).

CERTIFICATE certificate_name
Specifica che l'endpoint deve autenticare la connessione tramite il certificato specificato da certificate_name per definire l'identità per l'autorizzazione. L'endpoint sull'altro lato della connessione deve disporre di un certificato con chiave pubblica corrispondente alla chiave privata del certificato specificato.

WINDOWS [ { NTLM | KERBEROS | NEGOTIATE } ] CERTIFICATE certificate_name
Specifica che l'endpoint deve tentare di connettersi utilizzando l'autenticazione di Windows e, se il tentativo ha esito negativo, di provare a utilizzare il certificato specificato.

CERTIFICATE certificate_name WINDOWS [ { NTLM | KERBEROS | NEGOTIATE } ]
Specifica che l'endpoint deve tentare di connettersi utilizzando il certificato specificato e, se il tentativo ha esito negativo, di provare a utilizzare l'autenticazione di Windows.

ENCRYPTION = { DISABLED | SUPPORTED | REQUIRED } [ALGORITHM { AES | RC4 | AES RC4 | RC4 AES } ]
Specifica se nel processo viene utilizzata la crittografia. Il valore predefinito è REQUIRED.

DISABLED
Specifica che i dati inviati tramite una connessione non vengano crittografati.

SUPPORTED
Specifica che i dati vengano crittografati solo se per l'endpoint opposto è stato specificato SUPPORTED o REQUIRED.

REQUIRED
Specifica che le connessioni con questo endpoint devono utilizzare la crittografia. Per connettersi a questo endpoint, è necessario impostare l'argomento ENCRYPTION su SUPPORTED o REQUIRED per l'altro endpoint.

Facoltativamente, è possibile utilizzare l'argomento ALGORITHM per specificare la forma di crittografia utilizzata dall'endpoint, come descritto di seguito.

AES
Specifica che l'endpoint deve utilizzare l'algoritmo AES. Si tratta dell'impostazione predefinita in SQL Server 2016 (13.x) e versioni successive.

RC4
Specifica che l'endpoint deve utilizzare l'algoritmo RC4. Si tratta dell'impostazione predefinita fino a SQL Server 2014 (12.x).

Nota

L'algoritmo RC4 è supportato solo per motivi di compatibilità con le versioni precedenti. È possibile crittografare il nuovo materiale usando RC4 o RC4_128 solo quando il livello di compatibilità del database è 90 o 100. (Non consigliato.) Usare un algoritmo più recente, ad esempio uno degli algoritmi AES. In SQL Server 2012 (11.x) e versioni successive il materiale crittografato con RC4 o RC4_128 può essere decrittografato in qualsiasi livello di compatibilità.

AES RC4
Specifica che due endpoint eseguiranno la negoziazione di un algoritmo di crittografia con l'endpoint corrente, dando la priorità all'algoritmo AES.

RC4 AES
Specifica che due endpoint eseguiranno la negoziazione di un algoritmo di crittografia con l'endpoint corrente, dando la priorità all'algoritmo RC4.

Nota

L'algoritmo RC4 è deprecato. Questa funzionalità verrà rimossa nelle versioni future di SQL Server. Evitare di usare questa funzionalità in un nuovo progetto di sviluppo e prevedere interventi di modifica nelle applicazioni in cui è attualmente implementata. È consigliabile utilizzare AES.

Se i due endpoint specificano entrambi gli algoritmi, ma con un ordine diverso, l'algoritmo verrà definito dall'endpoint che accetta la connessione.

Opzioni di SERVICE_BROKER

Gli argomenti seguenti sono specifici dell'opzione SERVICE_BROKER.

MESSAGE_FORWARDING = { ENABLED | DISABLED }
Determina se i messaggi ricevuti da questo endpoint e destinati a servizi ubicati altrove verranno inoltrati.

ENABLED
Inoltra i messaggi se è disponibile un indirizzo di inoltro.

DISABLED
Cancella i messaggi per i servizi ubicati altrove. Si tratta dell'impostazione predefinita.

MESSAGE_FORWARD_SIZE =forward_size
Specifica lo spazio di archiviazione massimo espresso in MB da allocare per l'endpoint durante l'archiviazione dei messaggi da inoltrare.

Opzioni di DATABASE_MIRRORING

L'argomento seguente è specifico dell'opzione DATABASE_MIRRORING.

ROLE = { WITNESS | PARTNER | ALL }
Specifica il ruolo o i ruoli di mirroring del database supportati dall'endpoint.

WITNESS
Consente all'endpoint di assumere un ruolo di controllo del mirroring durante il processo di mirroring.

Nota

Per SQL Server 2005 Express Edition, WITNESS è l'unica opzione disponibile.

PARTNER
Consente all'endpoint di assumere un ruolo di partner del mirroring durante il processo di mirroring.

ALL
Consente all'endpoint di assumere i ruoli di controllo e partner del mirroring durante il processo di mirroring.

Per altre informazioni su questi ruoli, vedereMirroring del database (SQL Server).

Nota

Non esiste alcuna porta predefinita per DATABASE_MIRRORING.

Osservazioni:

Non è possibile eseguire le istruzioni ENDPOINT DDL all'interno di una transazione utente. Le istruzioni ENDPOINT DDL non avranno esito negativo anche in presenza di una transazione attiva a livello di isolamento dello snapshot che utilizza l'endpoint in fase di modifica.

Le richieste possono essere eseguite su ENDPOINT da:

  • Membri del ruolo predefinito del server sysadmin

  • Il proprietario dell'endpoint

  • Utenti o gruppi a cui è stata concessa l'autorizzazione CONNECT per l'endpoint.

Autorizzazioni

È richiesta l'autorizzazione CREATE ENDPOINT o l'appartenenza al ruolo predefinito del server sysadmin . Per altre informazioni, vedere GRANT - Autorizzazioni per endpoint (Transact-SQL).

Esempio

Creazione di un endpoint del mirroring del database

Nell'esempio seguente viene creato un endpoint del mirroring del database. L'endpoint utilizza il numero di porta 7022, anche se qualsiasi numero di porta funzionerebbe correttamente. L'endpoint è configurato in modo da utilizzare solo Kerberos come modalità di autenticazione Windows. L'opzione ENCRYPTION è configurata sul valore non predefinito SUPPORTED per garantire il supporto di dati crittografati e non crittografati. L'endpoint verrà configurato in modo da supportare entrambi i ruoli partner e di controllo del mirroring.

CREATE ENDPOINT endpoint_mirroring  
    STATE = STARTED  
    AS TCP ( LISTENER_PORT = 7022 )  
    FOR DATABASE_MIRRORING (  
       AUTHENTICATION = WINDOWS KERBEROS,  
       ENCRYPTION = SUPPORTED,  
       ROLE=ALL);  
GO  

Creare un nuovo endpoint che punti a un indirizzo IPv4 e a una porta specifici

CREATE ENDPOINT ipv4_endpoint_special
STATE = STARTED
AS TCP (
    LISTENER_PORT = 55555, LISTENER_IP = (10.0.75.1)
)
FOR TSQL ();

GRANT CONNECT ON ENDPOINT::[TSQL Default TCP] TO public; -- Keep existing public permission on default endpoint for demo purpose
GRANT CONNECT ON ENDPOINT::ipv4_endpoint_special
TO login_name;

Creare un nuovo endpoint che punti a un indirizzo IPv6 e a una porta specifici

CREATE ENDPOINT ipv6_endpoint_special STATE = STARTED AS TCP (
    LISTENER_PORT = 55555,
    LISTENER_IP = ('::1')
)
FOR TSQL();

GRANT CONNECT ON ENDPOINT::[TSQL Default TCP] TO PUBLIC;
GRANT CONNECT ON ENDPOINT::ipv6_endpoint_special TO PUBLIC;

Vedi anche

ALTER ENDPOINT (Transact-SQL)
Scelta di un algoritmo di crittografia
DROP ENDPOINT (Transact-SQL)
EVENTDATA (Transact-SQL)