2014-06-24 2 views
0

SQL Service Broker의 초보자로서 제 실례를 용서해주십시오.데이터베이스 재시작 후 SQL 서비스 브로커가 비활성화됩니다.

데이터베이스를 다시 시작한 후에 다시 활성화해야하는 SQL 서비스 브로커가 있습니다. SQL 서비스를 다시 시작한 후에 어떻게 자동으로 활성화 될 수 있습니까?

또한 브로커가 비활성화되었을 때 메시지를 보낼 수 있으며 SQL 오류가 발생하지 않습니다. 우리는 대기열을 검색 할 수 있으며 아무것도 가지고 있지 않습니다 (대기열 중 하나도 아님 - 아래 참조).

일단 브로커를 활성화하면 모든 메시지가 대기열에 나타납니다. 정상적인 동작인지 또는 일부 잘못 구성 되었습니까?

서비스 브로커 구성은 아래를 참조하십시오.

, 감사합니다

그렉 당신은 시작 서비스 후 다시 활성화 브로커에 작업을 수행 할 필요가 없습니다

ALTER DATABASE our_database SET ENABLE_BROKER WITH ROLLBACK IMMEDIATE 



CREATE MESSAGE TYPE IncomingFileMessage 
VALIDATION = NONE; 


CREATE CONTRACT IncomingMessageContract 
(IncomingFileMessage SENT BY ANY); 

CREATE QUEUE ReceivingQueue 

CREATE QUEUE IncomingMessageQueue 


CREATE SERVICE ReceivingMessageService 
ON QUEUE ReceivingQueue (IncomingMessageContract); 

CREATE SERVICE IncomingMessageService 
ON QUEUE IncomingMessageQueue (IncomingMessageContract); 

답변

0

. 활성화되면 명시 적으로 비활성화되거나 데이터베이스가 복원 될 때까지 활성화 된 상태로 유지됩니다. 실제로 데이터베이스는 이미 생성되었을 때 이미 활성화되어있을 가능성이 큽니다.

브로커가 비활성화 된 동안 전송되는 메시지의 위치는 sys.transmission_queue입니다. 배달 문제가있는 경우 보낸 메시지를 저장하는 경우 (이 경우 브로커가 비활성화 됨) 정상적인 동작입니다.

관련 문제