CREATE ENDPOINT (Transact-SQL)

S'applique à :SQL Server

Permet de créer des points de terminaison et de définir leurs propriétés, ainsi que les méthodes à la disposition des applications clientes. Pour plus d’informations sur les autorisations associées, consultez GRANT Endpoint Permissions.

La syntaxe pour CREATE ENDPOINT laquelle peut être divisée logiquement en deux parties :

  • La première partie commence par AS et se termine avant la FOR clause.

    Dans cette partie, vous fournissez des informations propres au protocole de transport (TCP), vous définissez un numéro de port d'écoute pour le point de terminaison et vous précisez la méthode d'authentification du point de terminaison et/ou une liste d'adresses IP (le cas échéant) que vous souhaitez empêcher d'accéder au point de terminaison.

  • La deuxième partie commence par la FOR clause.

    Dans cette partie, vous définissez la charge utile prise en charge sur le point de terminaison. La charge utile peut être de divers types parmi ceux pris en charge : Transact-SQL, Service Broker, mise en miroir de bases de données. Dans cette partie, vous préciserez également des informations propres à la langue.

Conventions de la syntaxe Transact-SQL

Syntaxe

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

Arguments

endPointName

Nom attribué pour le point de terminaison que vous créez. À utiliser lors de la mise à jour ou la suppression du point de terminaison.

Connexion d’autorisation

Indique une connexion SQL Server ou Windows valide qui détient l'objet de point de terminaison qui vient d'être créé. Si l’autorisation n’est pas spécifiée, par défaut, l’appelant devient propriétaire de l’objet nouvellement créé.

Pour affecter la propriété en spécifiant l’argument AUTHORIZATION, l’appelant doit bénéficier de la permission IMPERSONATE sur le login concerné.

L’option AUTHORIZATION n’est pas disponible dans ALTER ENDPOINT. La propriété ne peut être assignée que lorsque le point de terminaison est créé.

Pour réaffecter la propriété, consultez DROP ENDPOINT , puis revenez à cet article pour recréer le point de terminaison.

STATE = { STARTED | ARRÊTÉ | DISABLED }

État du point de terminaison lors de sa création. Si l’état n’est pas spécifié lors de la création du point de terminaison, STOPPED est la valeur par défaut.

STARTED

Le point de terminaison est lancé et écoute activement les connexions.

DISABLED

Le point de terminaison est désactivé. Dans cet état, le serveur écoute les requêtes du port mais renvoie des erreurs aux clients.

ARRÊTÉ

Le point de terminaison est arrêté. Dans cet état, le serveur n’écoute pas le port du point de terminaison ni ne répond à aucune tentative d’utilisation du point de terminaison.

Pour modifier l’état, utilisez ALTER ENDPOINT.

AS { TCP }

Spécifie le protocole de transport à utiliser.

FOR { TSQL | SERVICE_BROKER | DATABASE_MIRRORING }

Spécifie le type de charge utile.

Actuellement, il n'existe pas d'argument Transact-SQL spécifique à une langue à passer au paramètre <language_specific_arguments>.

Option de protocole TCP

Les arguments suivants s'appliquent uniquement à l'option du protocole TCP.

LISTENER_PORT = listenerPort

Spécifie le numéro du port écouté pour les connexions par le protocole TCP/IP Service Broker. Par convention, 5022 est utilisé mais n’importe quel numéro entre 1024 et 32767 est valide.

LISTENER_IP = ALL | (four_part_ipv4_address) | ( 'ip_address_v6' )

Spécifie l'adresse IP que le point de terminaison va écouter. La valeur par défaut est ALL. Ce qui signifie que l'écouteur acceptera une connexion sur n'importe quelle adresse IP valide.

Si vous configurez la mise en miroir de bases de données avec une adresse IP au lieu d’un nom de domaine complet (ALTER DATABASE SET PARTNER = partner_IP_address ou ALTER DATABASE SET WITNESS = witness_IP_address), vous devez spécifier LISTENER_IP =IP_address au lieu de créer des points de terminaison de LISTENER_IP=ALL mise en miroir.

Options T-SQL

CHIFFREMENT = { NÉGOCIÉ | STRICT }

S’applique à : SQL Server 2022 (16.x) et versions ultérieures

Spécifie la façon dont le chiffrement est utilisé dans le processus. La valeur par défaut est NEGOTIATED pour des raisons de compatibilité.

NÉGOCIÉ

La façon dont la connexion est chiffrée est négociée entre le serveur et le client. La connexion réelle établie peut chiffrer :

  • Message LOGIN7 uniquement.
  • Tous les messages à l’exception de PRELOGIN.
  • Tous les messages.

STRICT

Spécifie que tous les messages envoyés à ce point de terminaison doivent être chiffrés et que le certificat de secours ne serait pas présenté par le point de terminaison. Si l’en-tête TLS n’est pas le premier message, le serveur interrompt la connexion.

options SERVICE_BROKER et DATABASE_MIRRORING

Les arguments suivants et ENCRYPTION les AUTHENTICATION arguments sont communs aux options et DATABASE_MIRRORING aux SERVICE_BROKER options.

Notes

Pour connaître les options spécifiques à SERVICE_BROKER, consultez SERVICE_BROKER options plus loin dans cette section. Pour connaître les options spécifiques à DATABASE_MIRRORING, consultez DATABASE_MIRRORING options plus loin dans cette section.

AUTHENTICATION = <authentication_options>

Indique les exigences d'authentification TCP/IP pour les connexions à ce point de terminaison. La valeur par défaut est WINDOWS.

Les méthodes d’authentification prises en charge incluent NTLM et/ou Kerberos.

Important

Toutes les connexions de mise en miroir situées sur une instance du serveur utilisent un point de terminaison de mise en miroir de bases de données unique. Toutes les tentatives de création d'un autre point de terminaison de mise en miroir de bases de données échouent.

WINDOWS [ { NTLM | KERBEROS | NEGOTIATE } ]

Indique que le point de terminaison doit se connecter à l'aide du protocole d'authentification Windows pour authentifier les points de terminaison. Il s’agit de la valeur par défaut.

Si vous spécifiez une méthode d’autorisation (NTLM ou KERBEROS), cette méthode est toujours utilisée comme protocole d’authentification. La valeur par défaut, NEGOTIATEentraîne l’utilisation du protocole de négociation Windows par le point de terminaison pour choisir NTLM ou Kerberos.

CERTIFICAT certificate_name

Indique que le point de terminaison doit authentifier la connexion à l’aide du certificat spécifié par l’argument certificate_name afin de déterminer l’identité requise pour l’autorisation. Le point de terminaison éloigné doit disposer d'un certificat dont la clé publique correspond à la clé privée du certificat spécifié.

WINDOWS [ { NTLM | KERBEROS | NEGOTIATE } ] CERTIFICAT certificate_name

Indique que le point de terminaison doit essayer de se connecter à l'aide de l'authentification Windows et qu'en cas d'échec, il doit essayer en utilisant le certificat spécifié.

CERTIFICATE certificate_name WINDOWS [ { NTLM | KERBEROS | NEGOTIATE } ]

Indique que le point de terminaison doit essayer de se connecter à l'aide du certificat spécifié et qu'en cas d'échec, il doit essayer en utilisant l'authentification Windows.

ENCRYPTION = { DISABLED | PRIS EN CHARGE | REQUIRED } [ ALGORITHM { AES | RC4 | AES RC4 | RC4 AES } ]

Spécifie si le chiffrement est utilisé dans le processus. La valeur par défaut est REQUIRED.

DISABLED

Spécifie que les données envoyées via une connexion ne sont pas chiffrées.

SUPPORTED

Spécifie que les données sont chiffrées uniquement si le point de terminaison opposé spécifie soit SUPPORTEDREQUIRED.

REQUIRED

Indique que les connexions à ce point de terminaison doivent recourir au chiffrement. Par conséquent, pour vous connecter à ce point de terminaison, un autre point de terminaison doit avoir ENCRYPTION la valeur ou SUPPORTEDREQUIRED.

Si vous le souhaitez, vous pouvez utiliser l’argument ALGORITHM pour spécifier la forme de chiffrement utilisée par le point de terminaison, comme suit :

AES

Indique que le point de terminaison doit utiliser l'algorithme AES. Il s’agit de la valeur par défaut dans SQL Server 2016 (13.x) et versions ultérieures.

RC4

Indique que le point de terminaison doit utiliser l'algorithme RC4. Il s’agit de la valeur par défaut SQL Server 2014 (12.x).

Notes

L'algorithme RC4 est uniquement pris en charge pour des raisons de compatibilité descendante. Le nouveau matériel ne peut être chiffré à l'aide de RC4 ou de RC4_128 que lorsque la base de données se trouve dans le niveau de compatibilité 90 ou 100. (Non recommandé.) Utilisez à la place un algorithme plus récent, tel qu'un des algorithmes AES. Dans SQL Server 2012 (11.x) et versions ultérieures, le matériel chiffré à l’aide de RC4 ou de RC4_128 peut être déchiffré dans n’importe quel niveau de compatibilité.

AES RC4

Indique que les deux points de terminaison négocieront un algorithme de chiffrement avec ce point de terminaison, en donnant la préférence à l'algorithme AES.

RC4 AES

Indique que les deux points de terminaison négocieront un algorithme de chiffrement avec ce point de terminaison, en donnant la préférence à l'algorithme RC4.

Notes

L'algorithme RC4 est déconseillé. Cette fonctionnalité sera supprimée dans une version future de SQL Server. Évitez d'utiliser cette fonctionnalité dans de nouveaux travaux de développement, et prévoyez de modifier les applications qui utilisent actuellement cette fonctionnalité. Nous vous recommandons d'utiliser AES.

Si les deux points de terminaison spécifient les deux algorithmes mais dans des ordres différents, le point de terminaison acceptant la connexion a le dernier mot.

options de SERVICE_BROKER

Les arguments suivants sont spécifiques à l’option SERVICE_BROKER .

MESSAGE_FORWARDING = { ENABLED | DISABLED }

Détermine si les messages reçus par ce point de terminaison qui sont destinés à des services situés ailleurs seront transférés.

ENABLED

Transférer des messages si une adresse de transfert est disponible.

DISABLED

Annule les messages destinés à des services situés ailleurs. Il s’agit de la valeur par défaut.

MESSAGE_FORWARD_SIZE = forward_size

Indique l'espace de stockage maximal, en mégaoctets, à allouer au point de terminaison lors du stockage des messages à transférer.

options de DATABASE_MIRRORING

L'argument suivant est propre à l'option DATABASE_MIRRORING.

ROLE = { TÉMOIN | PARTENAIRE | ALL }

Spécifie le ou les rôles de mise en miroir de bases de données pris en charge par le point de terminaison.

WITNESS

Permet au point de terminaison de remplir le rôle de témoin dans le processus de mise en miroir de bases de données.

Notes

Pour SQL Server 2005 Express Edition, WITNESS est la seule option disponible.

PARTNER

Permet au point de terminaison de remplir le rôle de partenaire dans le processus de mise en miroir de bases de données.

ALL

Permet au point de terminaison de remplir le rôle de témoin et de partenaire dans le processus de mise en miroir de bases de données.

Pour plus d’informations sur ces rôles, consultez Mise en miroir de bases de données (SQL Server).

Notes

Il n’existe aucun port par défaut pour DATABASE_MIRRORING.

Notes

ENDPOINT DDL les instructions ne peuvent pas être exécutées à l’intérieur d’une transaction utilisateur. ENDPOINT DDL les instructions ne échouent pas même si une transaction de niveau d’isolation d’instantané actif utilise le point de terminaison modifié.

Les requêtes peuvent être exécutées par rapport à une ENDPOINT commande suivante :

  • Les membres du rôle serveur fixe sysadmin.

  • le propriétaire du point de terminaison ;

  • Utilisateurs ou groupes autorisés CONNECT sur le point de terminaison

Autorisations

Requiert l’autorisation CREATE ENDPOINT ou l’appartenance au rôle serveur fixe sysadmin (administrateur système). Pour plus d’informations, consultez GRANT Endpoint Permissions.

Exemples

Créer un point de terminaison de mise en miroir de bases de données

L'exemple suivant crée un point de terminaison pour la mise en miroir de bases de données. Le point de terminaison utilise le port numéro 7022, bien que tout numéro de port disponible convienne. Ce point est configuré en vue d'utiliser l'authentification Windows associée uniquement à Kerberos. L'option ENCRYPTION est paramétrée sur la valeur non définie par défaut SUPPORTED afin de prendre en charge les données chiffrées ou non. Le point de terminaison est configuré pour prendre en charge les rôles de partenaire et de témoin.

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

Créer un point de terminaison qui pointe vers une adresse IPv4 et un port spécifiques

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;

Créer un point de terminaison qui pointe vers une adresse IPv6 et un port spécifiques

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;

Créer un point de terminaison avec un chiffrement strict

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