Administrar identidades de Service Broker

Cada base de datos contiene un identificador único utilizado para enrutar mensajes de Service Broker a esa base de datos. Este tema describe las identidades de Service Broker, cómo se protege Service Broker de los errores de envío de los mensajes y las opciones disponibles para administrar las identidades de Services Broker.

Identificadores de Service Broker

Cada base de datos contiene un identificador de Service Broker. La columna service_broker_guid de la vista de catálogo sys.databases muestra el identificador de Service Broker para cada base de datos de la instancia. El enrutamiento de Service Broker utiliza este identificador para garantizar que todos los mensajes de una conversación se entregan a la misma base de datos. Por tanto, el identificador de Service Broker debe ser único en todas las instancias de la misma red. De lo contrario, los mensajes pueden dirigirse de forma incorrecta.

Entrega de mensajes de Service Broker

Para garantizar que un identificador de Service Broker es único en todas las bases de datos de una red, SQL Server proporciona un mecanismo para desactivar la entrega de mensajes de Service Broker en una base de datos. Cuando se desactiva la entrega de mensajes en una base de datos, todos los mensajes enviados desde esa base de datos permanecen en la cola de transmisión de la base de datos. Además, Service Broker no considera que los servicios de esa base de datos estén disponibles para recibir mensajes. Estos servicios no se tienen en cuenta cuando el enrutamiento de Service Broker busca un servicio de destino en una instancia.

La desactivación de la entrega de mensajes de Service Broker permite adjuntar una copia de seguridad de una base de datos de forma segura para solucionar problemas o para recuperar datos sin correr el riesgo de enviar los mensajes incorrectamente. La columna is_broker_enabled de sys.databases muestra el estado actual de la entrega de mensajes de Service Broker en cada base de datos.

SQL Server genera un identificador de Service Broker nuevo para cada nueva base de datos. Dado que el identificador es nuevo, SQL Server puede activar la entrega de mensajes de Service Broker de forma segura en la nueva base de datos. El resto de bases de datos de la red deben tener un identificador de Service Broker distinto.

Cuando adjunta o restaura una base de datos, debe asegurarse de que sólo una base de datos con un identificador de Service Broker determinado tiene activada la entrega de mensajes. De lo contrario, los mensajes pueden enviarse incorrectamente y el procesamiento de una conversación puede producirse en la copia incorrecta de la base de datos.

Administrar identificadores y entrega de mensajes

Los comandos CREATE DATABASE, ALTER DATABASE y RESTORE DATABASE contienen opciones para activar la entrega de mensajes de Service Broker y para cambiar el identificador de Service Broker de una base de datos.

Cuando adjunta o restaura una base de datos, el identificador de Service Broker y el estado de la entrega de mensajes permanecen intactos de forma predeterminada. En general, no cambia el identificador de Service Broker cuando restaura una copia de seguridad para recuperarla, cuando configura un par reflejado ni cuando configura el trasvase de registros de un servidor en espera. Si realiza una copia de la base de datos, debe cambiar el identificador de la instancia.

Existen cuatro opciones para administrar los identificadores y la entrega de mensajes:

  • ENABLE_BROKER. Esta opción activa la entrega de mensajes de Service Broker, conservando el identificador de Service Broker existente para la base de datos.

[!NOTA] Se necesita un bloqueo de base de datos para habilitar SQL Server Service Broker en cualquier base de datos. Para habilitar Service Broker en la base de datos msdb, detenga primero el Agente SQL Server para que Service Broker pueda obtener el bloqueo necesario.

  • DISABLE_BROKER. Esta opción desactiva la entrega de mensajes de Service Broker, conservando el identificador de Service Broker existente para la base de datos.
  • NEW_BROKER. Esta opción activa la entrega de mensajes de Service Broker y crea un nuevo identificador de Service Broker para la base de datos. Esta opción termina cualquier conversación existente de la base de datos con un error, ya que estas conversaciones no utilizan el nuevo identificador de la instancia.
  • ERROR_BROKER_CONVERSATIONS. Esta opción activa la entrega de mensajes de Service Broker, conservando el identificador de Service Broker existente para la base de datos. Service Broker termina todas las conversaciones de la base de datos con un error.

Sin embargo, independientemente de la opción especificada, SQL Server no permite que dos bases de datos con el mismo identificador de Service Broker tengan activada la entrega de mensajes en la misma instancia de SQL Server. Si adjunta una base de datos con el mismo identificador de Service Broker que una base de datos existente, SQL Server desactiva la entrega de mensajes de Service Broker en la base de datos que se adjunta.

Para obtener más información sobre las opciones para adjuntar bases de datos, vea CREATE DATABASE (Transact-SQL) y ALTER DATABASE (Transact-SQL). Para consultas instrucciones sobre cómo activar la entrega de mensajes de Service Broker en una base de datos, vea Cómo activar la entrega de mensajes de Service Broker en las bases de datos (Transact-SQL).

Vea también

Otros recursos

ALTER DATABASE (Transact-SQL)
CREATE DATABASE (Transact-SQL)
RESTORE (Transact-SQL)
sys.databases (Transact-SQL)

Ayuda e información

Obtener ayuda sobre SQL Server 2005