CREATE REMOTE SERVICE BINDING (Transact-SQL)

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

Icono de vínculo a temasConvenciones 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 } ]
[ ; ]

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 tipo sysname válido.

  • AUTHORIZATION owner_name
    Establece el propietario del enlace en el usuario o la función 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 función 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 una función a la 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 utiliza la autenticación anónima y las operaciones en la base de datos remota se realizan como miembro de la función fija 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. En Seguridad de diálogo de Service Broker se describe cómo la seguridad de diálogo de SQL Server asigna los enlaces de servicio remoto a entidades de seguridad.

Notas

Service Broker utiliza un enlace de servicio remoto para encontrar el certificado que se utilizará para una nueva conversación. La clave pública del certificado asociado con user_name se utiliza para autenticar mensajes enviados al servicio remoto y para cifrar una clave de sesión que se utilizará 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 aloja el servicio remoto.

Un enlace de servicio remoto sólo 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 aloja 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 aloja 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. Sin embargo, si hay un enlace de servicio remoto cuyo service_name especificado para TO SERVICE coincide con el nombre del servicio local, Service Broker utilizará el enlace.

Cuando ANONYMOUS = ON, el servicio iniciador se conecta al servicio de destino como miembro de la función fija de base de datos public. De manera predeterminada, los miembros de esta función 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 a la función public el permiso CONNECT para la base de datos y el permiso SEND para 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

De forma predeterminada, los permisos para crear un enlace de servicio remoto corresponden al usuario mencionado en la cláusula USER, a los miembros de la función fija de base de datos db_owner, a los miembros de la función fija de base de datos db_ddladmin y a los miembros de la función fija 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 que posee 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 que posee 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 aloja 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 ;