Cómo configurar permisos para un servicio local (Transact-SQL)

SQL Server impone el permiso SEND para cada servicio y permisos RECEIVE para cada cola. La entidad de seguridad que posee el servicio iniciador debe tener permiso SEND en el servicio de destino. La entidad de seguridad de una aplicación debe tener permiso RECEIVE para cada cola desde la que la aplicación recibe mensajes.

Este procedimiento es una forma simplificada del procedimiento de creación de una configuración de seguridad remota. En ambos casos, concede permiso SEND en el servicio de destino y permiso RECEIVE en la cola para el servicio que envía los mensajes. Sin embargo, en una configuración de seguridad remota, también debe configurar la seguridad de Service Broker para identificar correctamente el usuario remoto. En una configuración en una única base de datos, solo se necesita conceder permisos.

Conceder permisos para un servicio local

  1. Conceda permiso al usuario para recibir desde la cola que utiliza la aplicación.

  2. Conceda permiso al usuario que posee el servicio iniciador para enviar mensajes a los servicios con los que se comunica la aplicación.

Ejemplo

En este ejemplo se configuran permisos para permitir que BrokerApplicationUser envíe mensajes desde el servicio que utiliza la cola StoreFrontQueue al servicio Ordering. Este procedimiento da por supuesto que el usuario, los servicios y la cola ya existen.

USE AdventureWorks2008R2 ;
GO

-- This example sets permissions for a service
-- program that sends messages to the Ordering service
-- and receives messages from the StoreFrontQueue queue.

-- Grant SEND permission on the service to the owner
-- of the initiating service.
GRANT SEND ON SERVICE::[Ordering]
TO [BrokerApplicationUser] ;
GO

-- Grant RECEIVE permission on the queue.
GRANT RECEIVE ON [StoreFrontQueue]
TO [BrokerApplicationUser] ;
GO