CREATE ENDPOINT (Transact-SQL)

Se aplica a: SQL Server

Crea extremos y define sus propiedades, incluidos los métodos disponibles para las aplicaciones cliente. Para obtener más información sobre permisos relacionados, vea GRANT permisos de punto de conexión (Transact-SQL).

La sintaxis de CREATE ENDPOINT puede dividirse lógicamente en dos partes:

  • La primera parte comienza con AS y termina antes de la cláusula FOR.

    En esta parte, proporcione la información específica para el protocolo de transporte (TCP) y establezca un número de puerto de escucha para el extremo, así como el método de autenticación de extremo y/o una lista de direcciones IP (si hay alguna) a las que desee limitar el acceso al extremo.

  • La segunda parte comienza con la cláusula FOR.

    En esta parte, defina la carga que admite el extremo. La carga puede ser uno de los tipos admitidos: Transact-SQL, Service Broker y creación de reflejo de la base de datos. En esta parte, también puede incluir información específica del lenguaje.

Nota:

Los servicios web XML nativos (puntos de conexión HTTP/SOAP) se quitaron en SQL Server 2012 (11.x).

Convenciones de sintaxis de Transact-SQL

Sintaxis

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

Argumentos

endPointName
Es el nombre asignado para el extremo que está creando. Se utiliza al actualizar o eliminar el extremo.

AUTHORIZATION login
Especifica un inicio de sesión de SQL Server o Windows válido al que se le asigna la propiedad del objeto de extremo de nueva creación. Si no se especifica AUTHORIZATION, el autor de la llamada se convierte en el propietario del objeto de nueva creación de forma predeterminada.

Para asignar la propiedad al especificar AUTHORIZATION, el autor de la llamada debe tener el permiso IMPERSONATE en el parámetro login especificado.

La opción AUTHORIZATION no está disponible en ALTER ENDPOINT. La propiedad solo puede asignarse cuando se crea el extremo. Para reasignar la propiedad, consulte DROP ENDPOINT (Transact-SQL) y vuelva a este artículo para volver a crear el punto de conexión.

STATE = { STARTED | STOPPED | DISABLED }
Es el estado del extremo cuando se crea. Si el estado no se especifica cuando se crea el extremo, el valor predeterminado es STOPPED.

STARTED
El extremo se inicia y está activo a la escucha de conexiones.

DISABLED
El extremo está deshabilitado. En este estado, el servidor escucha las solicitudes del puerto pero devuelve errores a los clientes.

STOPPED
El extremo está detenido. En este estado, el servidor no escucha el puerto del extremo ni responde a ninguna solicitud que se haya intentado para usar el extremo.

Para cambiar el estado, use ALTER ENDPOINT (Transact-SQL).

AS { TCP }
Especifica el protocolo de transporte que se va a usar.

FOR { TSQL | SERVICE_BROKER | DATABASE_MIRRORING }
Especifica el tipo de carga.

Actualmente no hay ningún argumento específico del lenguaje Transact-SQL que se pueda pasar en el parámetro <language_specific_arguments>.

Opción de protocolo TCP

Los argumentos que aparecen a continuación solo se aplican a la opción de protocolo TCP.

LISTENER_PORT =puertoDelAgenteDeEscucha
Especifica el número de puerto que escucha el protocolo TCP/IP de Service Broker para las conexiones. Se usa 5022 por convención, pero cualquier número entre 1024 y 32767 es válido.

LISTENER_IP = ALL | (4-part-ip ) | ( "ip_address_v6" )
Especifica la dirección IP en la que escuchará el extremo. El valor predeterminado es ALL. Esto significa que la escucha aceptará una conexión en cualquier dirección IP válida.

Si configura la creación de reflejo de la base de datos con una dirección IP en lugar de con un nombre de dominio completo (ALTER DATABASE SET PARTNER = partner_IP_address o ALTER DATABASE SET WITNESS = witness_IP_address), tiene que especificar LISTENER_IP =IP_address en lugar de LISTENER_IP=ALL al crear los extremos de los reflejos.

Opciones SERVICE_BROKER y DATABASE_MIRRORING

Los argumentos AUTHENTICATION y ENCRYPTION siguientes son comunes a las opciones SERVICE_BROKER y DATABASE_MIRRORING.

Nota

Para obtener información sobre las opciones específicas de SERVICE_BROKER, vea "Opciones de SERVICE_BROKER", más adelante en esta sección. Para obtener información sobre las opciones específicas de DATABASE_MIRRORING, vea "Opciones de DATABASE_MIRRORING", más adelante en esta sección.

AUTHENTICATION =<authentication_options>
Especifica los requisitos de autenticación de TCP/IP para las conexiones de este extremo. El valor predeterminado es WINDOWS.

Entre los métodos de autenticación admitidos se incluyen NTLM, Kerberos o ambos.

Importante

Todas las conexiones de creación de reflejos de una instancia de servidor utilizan un único extremo de creación de reflejos de base de datos. Los intentos de crear un extremo de creación de reflejos de base de datos adicional generarán un error.

<authentication_options> ::=

WINDOWS [ { NTLM | KERBEROS | NEGOTIATE } ]
Especifica que el extremo se conecta mediante el protocolo de autenticación de Windows para autenticar los extremos. Este es el valor predeterminado.

Si especifica un método de autenticación (NTLM o KERBEROS), dicho método se utilizará siempre como el protocolo de autenticación. El valor predeterminado, NEGOTIATE, hace que el extremo utilice el protocolo de negociación de Windows para elegir NTLM o Kerberos.

CERTIFICATE certificate_name
Especifica que el punto de conexión va a autenticar la conexión mediante el certificado especificado por certificate_name para establecer la identidad para la autorización. El extremo alejado debe tener un certificado con la clave pública que coincida con la clave privada del certificado especificado.

WINDOWS [ { NTLM | KERBEROS | NEGOTIATE } ] CERTIFICATE certificate_name
Especifica que el extremo va a intentar conectarse mediante la autenticación de Windows y, si el intento da error, intentará utilizar el certificado especificado.

CERTIFICATE certificate_name WINDOWS [ { NTLM | KERBEROS | NEGOTIATE } ]
Especifica que el extremo va a intentar conectarse mediante el certificado especificado y, si el intento da error, intentará utilizar la autenticación de Windows.

ENCRYPTION = { DISABLED | SUPPORTED | REQUIRED } [ALGORITHM { AES | RC4 | AES RC4 | RC4 AES } ]
Especifica si el proceso utiliza cifrado. El valor predeterminado es REQUIRED.

DISABLED
Especifica que los datos enviados a través de una conexión no están cifrados.

SUPPORTED
Especifica que los datos están cifrados solo si el extremo opuesto especifica SUPPORTED o REQUIRED.

REQUIRED
Especifica que las conexiones con este extremo deben utilizar el cifrado. Así, para conectarse a este extremo, otro extremo debe haber establecido ENCRYPTION en SUPPORTED o REQUIRED.

Si lo desea, puede utilizar el argumento ALGORITHM para especificar la forma de cifrado que utiliza el extremo, de la manera siguiente:

AES
Especifica que el extremo debe usar el algoritmo AES. Este es el valor predeterminado en SQL Server 2016 (13.x) y versiones posteriores.

RC4
Especifica que el extremo debe usar el algoritmo RC4. Este es el valor predeterminado en SQL Server 2014 (12.x).

Nota

El algoritmo RC4 se admite únicamente por razones de compatibilidad con versiones anteriores. El material nuevo solo se puede cifrar con RC4 o RC4_128 cuando la base de datos tenga el nivel de compatibilidad 90 o 100. (No se recomienda). Use un algoritmo más reciente como uno de los algoritmos AES en su lugar. En SQL Server 2012 (11.x) y versiones posteriores, el material cifrado con RC4 o RC4_128 se puede descifrar en cualquier nivel de compatibilidad.

AES RC4
Especifica que los dos extremos negociarán un algoritmo de cifrado con este extremo, dando preferencia al algoritmo AES.

RC4 AES
Especifica que los dos extremos negociarán un algoritmo de cifrado con este extremo, dando preferencia al algoritmo RC4.

Nota

El algoritmo RC4 está obsoleto. Esta característica se quitará en una versión futura de SQL Server. Evite utilizar esta característica en nuevos trabajos de desarrollo y tenga previsto modificar las aplicaciones que actualmente la utilizan. Se recomienda utilizar AES.

Si ambos extremos especifican estos dos algoritmos en distintas órdenes, el extremo que acepte la conexión gana.

Opciones de SERVICE_BROKER

Los argumentos que aparecen a continuación son específicos de la opción SERVICE_BROKER.

MESSAGE_FORWARDING = { ENABLED | DISABLED }
Determina si se reenviarán los mensajes recibidos por este extremo que sean para los servicios que se encuentran en otro lugar.

ENABLED
Reenvía mensajes si dispone de una dirección de reenvío.

DISABLED
Descarta los mensajes para los servicios que están ubicados en otro lugar. Este es el valor predeterminado.

MESSAGE_FORWARD_SIZE =tamaño_del_reenvío
Especifica la cantidad máxima de almacenamiento en megabytes que se va a asignar para que el extremo la utilice cuando almacene mensajes que se van a reenviar.

Opciones de DATABASE_MIRRORING

Los argumentos que aparecen a continuación son específicos de la opción DATABASE_MIRRORING.

ROLE = { WITNESS | PARTNER | ALL }
Especifica el rol o los roles de creación de reflejo de la base de datos que admite el extremo.

WITNESS
Permite al extremo realizar el rol de un testigo en el proceso de creación del reflejo.

Nota

Para SQL Server 2005 Express Edition, WITNESS es la única opción disponible.

PARTNER
Permite al extremo realizar el rol de un asociado en el proceso de creación del reflejo.

ALL
Permite al extremo desempeñar el rol de un testigo y un asociado en el proceso de creación del reflejo.

Para obtener más información sobre estos roles, vea Creación de reflejo de la base de datos (SQL Server).

Nota

No existe ningún puerto predeterminado para DATABASE_MIRRORING.

Observaciones

Las instrucciones ENDPOINT DDL no pueden ejecutarse en una transacción de usuario. Las instrucciones ENDPOINT DDL no generan errores aunque una transacción activa de nivel de aislamiento de instantáneas utilice el extremo que se modifica.

Pueden ejecutar las solicitudes en un elemento ENDPOINT:

  • Los miembros del rol fijo de servidor sysadmin

  • El propietario del extremo

  • Los usuarios o grupos con permiso CONNECT en el extremo

Permisos

Requiere permiso CREATE ENDPOINT o pertenecer al rol fijo de servidor sysadmin . Para más información, consulte Permisos de punto de conexión de GRANT (Transact-SQL).

Ejemplo

Crear un extremo de creación de reflejo de la base de datos

En el ejemplo siguiente se crea un extremo de creación de reflejo de la base de datos. El extremo utiliza el número de puerto 7022, aunque cualquier número de puerto disponible sirve. El extremo se configura para utilizar la autenticación de Windows solo con Kerberos. La opción ENCRYPTION se configura con el valor que no es predeterminado de SUPPORTED para admitir datos cifrados o no cifrados. El extremo se configura para admitir los roles de asociado y testigo.

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

Creación de un punto de conexión que apunta a una dirección IPv4 específica y un puerto

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;

Creación de un punto de conexión que apunta a una dirección IPv6 específica y un puerto

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;

Consulte también

ALTER ENDPOINT (Transact-SQL)
Elegir un algoritmo de cifrado
DROP ENDPOINT (Transact-SQL)
EVENTDATA (Transact-SQL)