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, consultez GRANT - Octroyer des autorisations sur un point de terminaison (Transact-SQL).

La syntaxe de l'instruction CREATE ENDPOINT peut être logiquement subdivisée en deux parties :

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

    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 seconde partie commence par la clause FOR.

    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.

Notes

Les services Web XML natifs (points de terminaison SOAP/HTTP) ont été supprimés dans SQL Server 2012 (11.x).

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

Remarque

Pour afficher la syntaxe Transact-SQL pour SQL Server 2014 (12.x) et versions antérieures, consultez la Documentation sur les versions antérieures.

Arguments

endPointName
Correspond au nom affecté au point de terminaison que vous créez. À utiliser lors de la mise à jour ou la suppression du point de terminaison.

AUTHORIZATION login
Indique une connexion SQL Server ou Windows valide qui détient l'objet de point de terminaison qui vient d'être créé. Si l'argument AUTHORIZATION n'est pas spécifié, l'appelant devient, par défaut, le propriétaire de l'objet qui vient d'être 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éattribuer la propriété, reportez-vous à DROP ENDPOINT (Transact-SQL), puis revenez à cet article pour recréer le point de terminaison.

STATE = { STARTED | STOPPED | DISABLED }
Correspond à l'état du point de terminaison lors de sa création. Si l'état n'est pas précisé 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.

STOPPED
Le point de terminaison est arrêté. Dans cet état, le serveur n'écoute pas le port du point de terminaison et ne répond à aucune tentative de requête visant l'utilisation du point de terminaison.

Pour changer l’état, utilisez ALTER ENDPOINT (Transact-SQL).

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 | (4-part-ip) | ( "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 LISTENER_IP=ALL lorsque vous créez des points de terminaison de mise en miroir.

Options SERVICE_BROKER et DATABASE_MIRRORING

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

Notes

Pour les options propres à SERVICE_BROKER, consultez la section « Options SERVICE_BROKER » ci-dessous. Pour les options propres à DATABASE_MIRRORING, consultez la section « Options DATABASE_MIRRORING » ci-dessous.

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

Parmi les méthodes d'authentification prises en charge figurent 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.

<authentication_options> ::=

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 utilisée en tant que protocole d'authentification. Avec la valeur par défaut, NEGOTIATE, le point de terminaison utilise le protocole de négociation Windows pour choisir NTLM ou Kerberos.

CERTIFICATE 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 } ] CERTIFICATE 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 | SUPPORTED | 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 sur 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 SUPPORTED ou REQUIRED.

REQUIRED
Indique que les connexions à ce point de terminaison doivent recourir au chiffrement. Par conséquent, pour se connecter à ce point de terminaison, un autre point de terminaison doit avoir l'argument ENCRYPTION défini sur SUPPORTED ou REQUIRED.

Vous pouvez éventuellement utiliser l'argument ALGORITHM pour spécifier le type de chiffrement utilisé 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 SERVICE_BROKER

Les arguments suivants sont propres à 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ère les 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 DATABASE_MIRRORING

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

ROLE = { WITNESS | PARTNER | 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 l’édition SQL Server 2005 Express, 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

Aucun port par défaut n'est associé à DATABASE_MIRRORING.

Notes

Les instructions ENDPOINT DDL ne peuvent pas être exécutées au sein d'une transaction utilisateur. Les instructions ENDPOINT DDL n'échouent pas, même si une transaction active au niveau d'isolement d'instantané utilise le point de terminaison faisant l'objet d'une modification.

Les requêtes peuvent être exécutées sur un ENDPOINT par :

  • Les membres du rôle serveur fixe sysadmin.

  • le propriétaire du point de terminaison ;

  • les utilisateurs ou groupes disposant de l'autorisation CONNECT sur le point de terminaison.

Autorisations

Requiert l'autorisation CREATE ENDPOINT ou l'appartenance au rôle serveur fixe sysadmin . Pour plus d’informations, consultez Autorisations de point de terminaison GRANT (Transact-SQL).

Exemple

Création d'un point de terminaison pour la 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 = 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;

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

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

Voir aussi

ALTER ENDPOINT (Transact-SQL)
Choisir un algorithme de chiffrement
DROP ENDPOINT (Transact-SQL)
EVENTDATA (Transact-SQL)