Поделиться через


Удаление приложений, работающих с компонентом Service Broker

Приложение, работающее с компонентом Service Broker, необходимо удалить только в том случае, если база данных продолжает размещаться в том же экземпляре SQL Server, но больше не содержит реализованную в приложении службу. При удалении базы данных удаляются и содержащиеся в ней объекты компонента Service Broker. При переносе базы данных на другой экземпляр SQL Server переносятся и службы, размещенные в этой базе данных.

Удаление службы вызывающей стороны

Чтобы удалить службу вызывающей стороны, сначала остановите создание приложением исходящих сообщений. Оптимальный способ решения этой задачи зависит от типа приложения. Если приложение использует для запуска диалога хранимую процедуру, возможно, потребуется удалить эту процедуру. В случае внешней программы, возможно, будет необходимо сделать программу недоступной пользователям или удалить ее.

Остановив создание службой новых сообщений, убедитесь, что служба обработала все оставшиеся в очереди сообщения. Для этого можно написать простую процедуру, которая принимает каждое сообщение из очереди, завершает диалог с ошибкой и удаляет данные о состоянии диалога. Если обработаны все сообщения в очереди, целевые приложения смогут правильно завершить диалог вместо того, чтобы дожидаться ответа от службы, работа которой завершается.

Наконец, удалите определение службы, чтобы компонент Service Broker прекратил принимать адресованные ей сообщения. Удалите все связанные со службой маршруты. Удалите также ее контракты, типы сообщений и очереди, если эти объекты не используются другими службами в экземпляре. При необходимости удалите хранимую процедуру активации этой службы.

Удаление целевой службы

Чтобы удалить целевую службу, сначала убедитесь, что она обработала все оставшиеся в очереди сообщения. Можно позволить приложению обработать сообщения, написать простую процедуру, завершающую диалоги со специфической для приложения ошибкой, или просто удалить службу для завершения всех диалогов с ошибкой компонента Service Broker. В любом случае, благодаря завершению всех диалогов приложения вызывающая сторона сможет закончить связь правильно, а не дожидаться ответа от службы, завершающей работу.

В базах данных, где размещены службы вызывающей стороны, удалите каждый маршрут, содержащий сетевой адрес удаляемой службы. Удалите маршруты к удаляемой службе из базы данных msdb тех экземпляров, которые пересылают сообщения этой службе. Если экземпляр, в котором размещается служба, содержит маршрут к ней в базе данных msdb, удалите этот маршрут.

Наконец, удалите определение службы, чтобы компонент Service Broker прекратил принимать адресованные ей сообщения. Удалите также ее контракты, типы сообщений и очереди, если эти объекты не используются другими службами в экземпляре. При необходимости удалите хранимую процедуру активации этой службы.

См. также

Основные понятия

Запуск и остановка очереди

Другие ресурсы

ALTER QUEUE (Transact-SQL)

Справка и поддержка

Получение помощи по SQL Server 2005