Contexto de activación interna

Este tema describe el contexto de ejecución para un procedimiento almacenado iniciado por la activación interna.

Contexto de seguridad

Una cola configurada para la activación también debe especificar el usuario como el que se ejecuta el procedimiento almacenado de activación. SQL Server suplanta a este usuario antes de iniciar el procedimiento almacenado.

Cuando el procedimiento almacenado también especifica una cláusula EXECUTE AS, se producen dos suplantaciones. SQL Server suplanta primero al usuario especificado para la cola y ejecuta el procedimiento almacenado. Cuando el procedimiento almacenado se ejecuta, el procedimiento suplanta al usuario especificado en la cláusula EXECUTE AS del procedimiento.

Observe que el usuario especificado para un enlace de servicio remoto generalmente es un usuario diferente del usuario especificado para la activación. Los permisos requeridos para cada usuario también difieren. El usuario del enlace de servicio remoto no necesita el permiso para leer de la cola o ejecutar los procedimientos almacenados en la base de datos, mientras el usuario especificado para la activación no necesita permiso para enviar mensajes al servicio. Para obtener más información acerca de los permisos del usuario, vea Identidad y Control de acceso (Service Broker) y Seguridad de diálogo de Service Broker.

Configuración de la sesión

Service Broker ejecuta los programas de servicio activados internamente en una sesión en segundo plano distinta de la conexión que creó el mensaje. Las opciones establecidas para esta sesión son las opciones predeterminadas para la base de datos.

Dentro de una sesión iniciada por Service Broker, SQL Server escribe la salida de las instrucciones RAISERROR y PRINT en el registro de errores de SQL Server. Service Broker no proporciona parámetros a un procedimiento almacenado activado. Service Broker no considera los valores devueltos de un procedimiento almacenado activado y no procesa los conjuntos de resultados de un procedimiento almacenado activado.

Contexto de transacción

Un procedimiento almacenado activado es responsable de administrar las transacciones. SQL Server no inicia una transacción antes de activar el procedimiento almacenado y el procedimiento almacenado se ejecuta en un contexto de transacción diferente que la operación interna que activa el procedimiento. Para ver un análisis sobre la administración de las transacciones en procedimientos almacenados activados, vea Mensajería transaccional.

Detección de errores

Un procedimiento almacenado activado debe recibir los mensajes de la cola que activó el procedimiento. Si el procedimiento almacenado sale sin recibir los mensajes o el monitor de la cola detecta que el procedimiento almacenado no recibe los mensajes después de un breve tiempo de espera, el monitor de la cola considera que el procedimiento almacenado no se ha producido. En este caso, el monitor de la cola deja de activar el procedimiento almacenado.