Compartir a través de


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

Argumentos

endPointName

Nombre asignado para el punto de conexión que va a crear. Se utiliza al actualizar o eliminar el extremo.

Inicio de sesión de AUTORIZACIÓN

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, de forma predeterminada, el autor de la llamada se convierte en propietario del objeto recién creado.

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 | DETENIDO | DISABLED }

Estado del punto de conexión cuando se crea. Si el estado no se especifica cuando se crea el punto de conexión, STOPPED es el valor predeterminado.

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.

DETENIDO

El extremo está detenido. En este estado, el servidor no escucha el puerto del punto de conexión ni responde a las solicitudes intentadas para usar el punto de conexión.

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 = listenerPort

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 un nombre de dominio completo (ALTER DATABASE SET PARTNER = partner_IP_address o ALTER DATABASE SET WITNESS = witness_IP_address), debe especificar LISTENER_IP =IP_address en lugar de al crear puntos de conexión de creación de LISTENER_IP=ALL reflejo.

Opciones de T-SQL

ENCRYPTION = { NEGOTIATED | STRICT }

Se aplica a: SQL Server 2022 (16.x) y versiones posteriores

Especifica cómo se usa el cifrado en el proceso. El valor predeterminado es NEGOTIATED por motivos de compatibilidad.

NEGOCIADO

La forma en que se cifra la conexión se negocia entre el servidor y el cliente. La conexión real establecida podría cifrar:

  • Solo mensaje LOGIN7.
  • Todos los mensajes excepto PRELOGIN.
  • Todos los mensajes.

ESTRICTO

Especifica que todos los mensajes enviados a este punto de conexión deben cifrarse y que el punto de conexión no presentaría el certificado de reserva. Si el encabezado TLS no es el primer mensaje, el servidor interrumpe la conexión.

opciones de 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.

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_NAME CERTIFICATE

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 | COMPATIBLE | 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íe los mensajes si hay una dirección de reenvío disponible.

DISABLED

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

MESSAGE_FORWARD_SIZE = forward_size

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 hay ningún puerto predeterminado para DATABASE_MIRRORING.

Observaciones

Las instrucciones DDL endpoint no se pueden ejecutar dentro de una transacción de usuario. Las instrucciones DDL de ENDPOINT no generan errores incluso si una transacción de nivel de aislamiento de instantánea activa usa el punto de conexión que se está modificando.

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

Creación de un punto de conexión 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;

Creación de un nuevo punto de conexión con cifrado estricto

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