CREATE REMOTE SERVICE BINDING (Transact-SQL)

Se aplica a:SQL Server

Crea un enlace que define las credenciales de seguridad que se utilizarán para iniciar una conversación con un servicio remoto.

Convenciones de sintaxis de Transact-SQL

Sintaxis

CREATE REMOTE SERVICE BINDING binding_name   
   [ AUTHORIZATION owner_name ]   
   TO SERVICE 'service_name'   
   WITH  USER = user_name [ , ANONYMOUS = { ON | OFF } ]  
[ ; ]  

Nota:

Para ver la sintaxis de Transact-SQL para SQL Server 2014 (12.x) y versiones anteriores, consulte Versiones anteriores de la documentación.

Argumentos

binding_name
Es el nombre del enlace de servicio remoto que se va a crear. No se pueden especificar nombres de servidor, base de datos o esquema. binding_name debe ser un sysname válido.

AUTHORIZATION owner_name
Establece el propietario del enlace en el usuario o el rol de base de datos que se ha especificado. Cuando el usuario actual es dbo o sa, owner_name puede ser el nombre de cualquier usuario o rol válidos. En caso contrario, owner_name debe ser el nombre del usuario actual, el nombre de un usuario para el que el usuario actual tiene permisos IMPERSONATE o el nombre de un rol al que pertenece el usuario actual.

TO SERVICE 'service_name'
Especifica el servicio remoto que se enlazará al usuario identificado en la cláusula WITH USER.

USER = user_name
Especifica la entidad de seguridad de base de datos que posee el certificado asociado con el servicio remoto identificado por la cláusula TO SERVICE. Este certificado se utiliza para el cifrado y la autenticación de los mensajes que se intercambian con el servicio remoto.

ANONYMOUS
Especifica si se va a utilizar la autenticación anónima en la comunicación con el servicio remoto. Si ANONYMOUS = ON, se usa la autenticación anónima y las operaciones en la base de datos remota se realizan como miembro del rol fijo de base de datos public. Si ANONYMOUS = OFF, las operaciones en la base de datos remota se realizan como un usuario específico de esa base de datos. Si no se especifica esta cláusula, el valor predeterminado es OFF.

Observaciones

Service Broker usa un enlace de servicio remoto para encontrar el certificado que se utilizará en una nueva conversación. La clave pública del certificado asociado a user_name se usa para autenticar mensajes enviados al servicio remoto y para cifrar una clave de sesión que se usará después para cifrar la conversación. El certificado de user_name debe corresponder al certificado de un usuario de la base de datos que hospede el servicio remoto.

Un enlace de servicio remoto solo es necesario para servicios iniciadores que se comunican con servicios de destino que están fuera de la instancia de SQL Server. Una base de datos que hospeda un servicio iniciador debe contener enlaces de servicio remoto para todos los servicios de destino que están fuera de la instancia de SQL Server. La base de datos que hospeda un servicio de destino no necesita contener enlaces de servicio remoto para los servicios iniciadores que se comunican con el servicio de destino. Cuando los servicios iniciador y de destino están en la misma instancia de SQL Server, no es necesario ningún enlace de servicio remoto. No obstante, si hay un enlace de servicio remoto cuyo service_name especificado para TO SERVICE coincide con el nombre del servicio local, Service Broker usará el enlace.

Cuando ANONYMOUS = ON, el servicio iniciador se conecta al servicio de destino como miembro del rol fijo de base de datos public. De manera predeterminada, los miembros de este rol no tienen permiso para conectarse a una base de datos. Para que los mensajes se envíen correctamente, la base de datos de destino debe conceder al rol public el permiso CONNECT en la base de datos y el permiso SEND en el servicio de destino.

Cuando un usuario posee más de un certificado, Service Broker selecciona, entre todos los certificados válidos y marcados como AVAILABLE FOR BEGIN_DIALOG, el que tenga la fecha de vencimiento más tardía.

Permisos

Los permisos para crear un enlace de servicio remoto pertenecen de forma predeterminada al usuario mencionado en la cláusula USER, a los miembros del rol fijo de base de datos db_owner, a los miembros del rol fijo de base de datos db_ddladmin y a los miembros del rol fijo de servidor sysadmin.

El usuario que ejecuta la instrucción CREATE REMOTE SERVICE BINDING debe tener permiso de suplantación para la entidad de seguridad especificada en la instrucción.

Un enlace de servicio remoto no puede ser un objeto temporal. Se permiten los nombres de enlace de servicio remoto que empiecen por # , aunque se trata de objetos permanentes.

Ejemplos

A. Crear un enlace de servicio remoto

En el ejemplo siguiente se crea un enlace para el servicio //Adventure-Works.com/services/AccountsPayable. Service Broker utiliza el certificado de la entidad de seguridad de base de datos APUser para autenticarse en el servicio remoto e intercambiar la clave de cifrado de sesión con el servicio remoto.

CREATE REMOTE SERVICE BINDING APBinding  
    TO SERVICE '//Adventure-Works.com/services/AccountsPayable'  
    WITH USER = APUser ;  

B. Crear un enlace de servicio remoto con autenticación anónima

En el ejemplo siguiente se crea un enlace para el servicio //Adventure-Works.com/services/AccountsPayable. Service Broker utiliza el certificado de la entidad de seguridad de base de datos APUser para intercambiar la clave de cifrado de sesión con el servicio remoto. Service Broker no se autentica en el servicio remoto. En la base de datos que hospeda el servicio remoto, los mensajes se entregan como usuario guest (invitado).

CREATE REMOTE SERVICE BINDING APBinding  
    TO SERVICE '//Adventure-Works.com/services/AccountsPayable'  
    WITH USER = APUser, ANONYMOUS=ON ;  

Vea también

ALTER REMOTE SERVICE BINDING (Transact-SQL)
DROP REMOTE SERVICE BINDING (Transact-SQL)
EVENTDATA (Transact-SQL)