Desinstalar aplicaciones de Service Broker
Debe desinstalar una aplicación de Service Broker sólo mientras la base de datos sigue alojada en la misma instancia, pero cuando ya no proporciona el servicio que implementa la aplicación. Al quitar una base de datos, los objetos de Service Broker se quitan con ella. Al mover una base de datos de una instancia a otra también se mueven sus servicios.
Desinstalar un servicio iniciador
Para desinstalar un servicio iniciador, impida primero que la aplicación cree más mensajes salientes. La mejor forma de evitar que la aplicación envíe nuevos mensajes depende del tipo de aplicación. En una aplicación que utiliza un procedimiento almacenado para iniciar una conversación, puede que necesite quitar ese procedimiento almacenado. En un programa externo, es posible que necesite hacer que el programa no esté disponible para los usuarios o que deba desinstalar el programa.
Después de impedir que el servicio cree nuevos mensajes, asegúrese de que procesa cada mensaje que permanece en la cola. Puede escribir un procedimiento sencillo que reciba cada mensaje de la cola, finalice la conversación con un error y quite el estado de la conversación. Al procesar todos los mensajes de la cola, las aplicaciones de destino pueden finalizar la conversación en lugar de esperar una respuesta del servicio que se está cerrando.
Por último, quite la definición de servicio para garantizar que Service Broker no acepta más mensajes para él. Quite todas las rutas del servicio. Quite los contratos, los tipos de mensaje y las colas del servicio a menos que otro servicio de la instancia utilice estos objetos. Si es necesario, quite el procedimiento almacenado de activación del servicio.
Desinstalar un servicio de destino
Para desinstalar un servicio de destino, asegúrese primero de que el servicio procesa cada mensaje que permanece en la cola. Pude dejar que la aplicación procese los mensajes, escribir un procedimiento sencillo que finalice las conversaciones con un error específico de aplicación o sencillamente quitar el servicio para finalizar las conversaciones con un error de Service Broker. Sea cual sea el método elegido, la finalización de las conversaciones permite a las aplicaciones iniciadoras finalizar correctamente la conversación en lugar de esperar la respuesta del servicio que se está cerrando.
En las bases de datos que alojan servicios iniciadores, quite todas las rutas que contengan la dirección de red del servicio que está desinstalando. Quite las rutas de este servicio en la base de datos msdb de las instancias que reenvían mensajes para este servicio. Si la instancia que aloja el servicio contiene una ruta en msdb para el servicio, quítela.
Por último, quite la definición de servicio para garantizar que Service Broker no acepta más mensajes para él. Quite los contratos, los tipos de mensaje y las colas del servicio a menos que otro servicio de la instancia utilice estos objetos. Si es necesario, quite el procedimiento almacenado de activación del servicio.