Service Broker 응용 프로그램 제거
데이터베이스가 계속해서 같은 인스턴스에서 호스팅되지만 응용 프로그램에 구현된 서비스를 더 이상 제공하지 않는 경우에만 Service Broker 응용 프로그램을 제거해야 합니다. 데이터베이스를 삭제하면 해당 데이터베이스 내의 Service Broker 개체가 삭제됩니다. 데이터베이스를 인스턴스에서 다른 인스턴스로 이동하면 해당 데이터베이스 내에 호스팅되는 서비스도 이동됩니다.
시작 서비스 제거
시작 서비스를 제거하려면 먼저 응용 프로그램이 보내는 메시지를 만드는 것을 중지시킵니다. 응용 프로그램이 새 메시지를 보내지 못하도록 하는 가장 좋은 방법은 응용 프로그램 종류에 따라 달라집니다. 저장 프로시저를 사용하여 대화를 시작하는 응용 프로그램의 경우 해당 저장 프로시저를 삭제해야 할 수도 있습니다. 외부 프로그램의 경우 프로그램을 사용자가 사용할 수 없도록 하거나 프로그램을 제거해야 할 수도 있습니다.
서비스가 새 메시지를 만드는 것을 중지시킨 후에는 서비스가 큐에 남아 있는 각 메시지를 처리하도록 확인합니다. 큐의 각 메시지를 받고 오류를 사용하여 대화를 종료한 다음 대화의 상태를 제거하는 간단한 프로시저를 작성할 수 있습니다. 큐의 모든 메시지를 처리하면 종료되는 서비스의 응답을 기다리지 않고 대상 응용 프로그램이 대화를 정상적으로 종료할 수 있습니다.
마지막으로 Service Broker가 서비스에 대한 메시지를 더 이상 받지 않도록 해당 서비스 정의를 삭제합니다. 서비스에 대한 경로를 모두 삭제합니다. 서비스에 대한 계약, 메시지 유형 및 큐가 인스턴스의 다른 서비스에 사용되지 않는 경우 해당 개체를 삭제합니다. 필요한 경우 서비스에 대한 활성화 저장 프로시저를 삭제합니다.
대상 서비스 제거
대상 서비스를 제거하려면 먼저 서비스가 큐에 남아 있는 각 메시지를 처리하도록 확인합니다. 응용 프로그램이 메시지를 처리하거나, 응용 프로그램별 오류를 사용하여 대화를 종료하는 간단한 프로시저를 작성하거나, 서비스를 삭제하여 Service Broker 오류로 대화를 종료하도록 할 수 있습니다. 어떤 방법을 선택하든 관계없이 대화를 종료하면 종료되는 서비스의 응답을 기다리지 않고 시작 응용 프로그램이 정상적으로 종료될 수 있습니다.
시작 서비스를 호스팅하는 데이터베이스에서는 제거할 서비스에 대한 네트워크 주소가 포함된 각 경로를 삭제합니다. 이 서비스에 대한 메시지를 전달하는 인스턴스의 msdb 데이터베이스에서 이 서비스에 대한 경로를 삭제합니다. 서비스를 호스팅하는 인스턴스에 서비스에 대한 msdb에 경로가 포함되어 있으면 해당 경로를 삭제합니다.
마지막으로 Service Broker가 서비스에 대한 메시지를 더 이상 받지 않도록 해당 서비스 정의를 삭제합니다. 서비스에 대한 계약, 메시지 유형 및 큐가 인스턴스의 다른 서비스에 사용되지 않는 경우 해당 개체를 삭제합니다. 필요한 경우 서비스에 대한 활성화 저장 프로시저를 삭제합니다.