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 informazioni sulle autorizzazioni correlate, vedere GRANT Endpoint Permissions.For related permissions, see GRANT Endpoint Permissions.

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

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

    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 con la FOR clausola .

    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.

Convenzioni relative alla 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 | ( four_part_ipv4_address ) | ( 'ip_address_v6' ) ]
)

<FOR TSQL_language_specific_arguments> ::=
FOR TSQL (
    [ ENCRYPTION = { NEGOTIATED | STRICT } ]
)

<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 }
)

Argomenti

endPointName

Nome assegnato per l'endpoint che si sta creando. Utilizzare questo nome in caso di aggiornamento o eliminazione dell'endpoint.

LOGIN AUTHORIZATION

Specifica un account di accesso di SQL Server o di Windows valido a cui viene assegnata la proprietà del nuovo oggetto endpoint creato. Se AUTHORIZATION non è specificato, per impostazione predefinita, il chiamante diventa proprietario dell'oggetto appena 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 e quindi tornare a questo articolo per ricreare l'endpoint.

STATE = { STARTED | STOPPED | DISABLED }

Stato dell'endpoint al momento della creazione. Se lo stato non viene specificato quando viene creato l'endpoint, STOPPED è l'impostazione predefinita.

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.

FERMATA

L'endpoint è arrestato. In questo stato, il server non è in ascolto della porta dell'endpoint o non risponde alle richieste tentate di usare l'endpoint.

Per modificare lo stato, usare ALTER ENDPOINT.

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 protocollo 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 | (four_part_ipv4_address) | ( '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é 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 endpoint di mirroring.

Opzioni T-SQL

ENCRYPTION = { NEGOTIATED | STRICT }

Si applica a: SQL Server 2022 (16.x) e versioni successive

Specifica la modalità di utilizzo della crittografia nel processo. Il valore predefinito è NEGOTIATED per motivi di compatibilità.

NEGOZIATO

La modalità di crittografia della connessione viene negoziata tra il server e il client. La connessione effettiva stabilita potrebbe crittografare:

  • Solo il messaggio LOGIN7.
  • Tutti i messaggi tranne PRELOGIN.
  • Tutti i messaggi.

SEVERO

Specifica che tutti i messaggi inviati a questo endpoint devono essere crittografati e che il certificato di fallback non venga presentato dall'endpoint. Se l'intestazione TLS non è il primo messaggio, il server interrompe la connessione.

opzioni di SERVICE_BROKER e DATABASE_MIRRORING

Gli argomenti e seguenti AUTHENTICATION sono comuni alle SERVICE_BROKER opzioni e ENCRYPTIONDATABASE_MIRRORING .

Nota

Per le opzioni specifiche di SERVICE_BROKER, vedere SERVICE_BROKER opzioni più avanti in questa sezione. Per le opzioni specifiche di DATABASE_MIRRORING, vedere DATABASE_MIRRORING opzioni più avanti in questa sezione.

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 e/o Kerberos.

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.

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 autorizzazione (NTLM o KERBEROS), tale metodo viene sempre usato come protocollo di autenticazione. Il valore predefinito, NEGOTIATE, fa sì che l'endpoint usi il protocollo di negoziazione di Windows per scegliere NTLM o Kerberos.

CERTIFICATE_NAME CERTIFICATE

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 sono crittografati.

SUPPORTED

Specifica che i dati vengono crittografati solo se l'endpoint opposto specifica SUPPORTED o REQUIRED.

REQUIRED

Specifica che le connessioni con questo endpoint devono utilizzare la crittografia. Pertanto, per connettersi a questo endpoint, è necessario che ENCRYPTION un altro endpoint sia impostato su SUPPORTED o REQUIRED.

Facoltativamente, è possibile usare l'argomento ALGORITHM per specificare la forma di crittografia usata dall'endpoint, come indicato 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

Inoltrare 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:

ENDPOINT DDL Le istruzioni non possono essere eseguite all'interno di una transazione utente. ENDPOINT DDL Le istruzioni non hanno esito negativo anche se una transazione a livello di isolamento dello snapshot attivo usa l'endpoint da modificare.

Le richieste possono essere eseguite su un oggetto ENDPOINT tramite quanto segue:

  • Membri del ruolo predefinito del server sysadmin

  • Il proprietario dell'endpoint

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

Autorizzazioni

È richiesta l'autorizzazione CREATE ENDPOINT o l'appartenenza al ruolo predefinito del server sysadmin. Per altre informazioni, vedere GRANT Endpoint Permissions.For more information, see GRANT Endpoint Permissions.

Examples

Creare 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 = 32766,
    LISTENER_IP = (10.0.75.1)
)
FOR TSQL ();

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

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 = 32766,
    LISTENER_IP = ('::1')
)
FOR TSQL();

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

GRANT CONNECT ON ENDPOINT::ipv6_endpoint_special TO PUBLIC;

Creare un nuovo endpoint con crittografia rigorosa

CREATE ENDPOINT [TDSSConnection]
STATE = STARTED
AS TCP (
    LISTENER_PORT = 1433,
    LISTENER_IP = ALL
)
FOR TSQL (
    ENCRYPTION = STRICT
);
GO