2010-05-28 3 views
11

Service Broker가 서버에 설정되어 있으면 새 서버로 이동하는 중입니다. 그러나 새 상자에 Service Broker를 설정할 수 없습니다. 데이터베이스 복원 후 Service Broker가 작동하지 않습니다.

도 메시지 유형 다시 그들을 추가

SELECT

ON 상태로 ALTER QUEUE를 설정 *의 DB에 브로커 활성화 경로, 서비스, 계약, 큐를 삭제하고 같은 것들을 (나에게) 명백한했을 sys.service_queues로부터

가 activation_enabled로 표시 내 자신이, 포함, 나에게 큐의 목록을 제공, 등 receive_enabled

없이 큐가 작동하지 않는 말을. 내가 그들에게 메시지를 떨어 뜨리면 아무것도 들어 가지 않으며 아무것도 나오지 않는다.

아이디어가 있으십니까? 내가 ... 내가보고 싶었어 정말 분명 뭔가가있을거야 어둠 속에서

답변

30

그냥 촬영 :

ALTER AUTHORIZATION ON DATABASE::[restored db name] TO [sa]; 

복원 된 데이터베이스의 DBO가 원래의 DB를 만든 Windows SID입니다 섬기는 사람. 이것은 새 서버에서 의미가없는 로컬 SID (예 : SERVERNAME \ user) 일 수 있습니다. 이 문제는 대개 활성화 된 절차에 영향을 미치며 일 수 있습니다.은 메시지 전달에 영향을 미치며 SQL에서 'dbo'로 가장 할 수 없기 때문에 두 가지 문제가 발생합니다. dbo를 유효한 로그인 SID (sa와 같은)로 변경하면 문제가 해결됩니다.

이렇게해도 문제가 해결되지 않으면 메시지의 위치를 ​​추적해야합니다. 그들이 sys.transmission_queue에 있으면 transmission_status를 확인해야합니다. 타겟 큐에 도달했지만 활성화가 발생하지 않으면 ERRORLOG를 확인하십시오. 메시지가 사라지면 fire-and-forget (SEND에 즉시 END가 이어짐)을 수행 했으므로 원인을 나타내는 오류 메시지가 삭제됩니다. 이 기사 Troubleshooting Dialogs에는 더 많은 정보가 있습니다.

그리고 마지막으로 ssbdiagnose.exe을 사용해보세요.

+0

Remus, 평소와 같이 '어둠 속에서 쐈다'는 불스 아이를 때렸습니다. 저는 '불과 잊어 버림'을 사용하여 지금 치료할 것입니다. 지난 몇 년 동안 Service Broker 관련 기사를 직접 보게 된 것은 이번이 3 번째라고 생각합니다. 인터넷 오스카를 받아야한다고 생각합니다. =) – roryok

+0

방금 ​​당신은 나의 날을 구했습니다! – Manu

5

Remus의 답변 외에도, restoredDB의 BrokerEnabled 속성을 점검해야 할 수도 있습니다. DB를 복원 할 때마다 복원 된 DB의 BrokerEnabled 속성은 False로 설정됩니다. 이런 이유로 아무것도 대기열에 들어 가지 않습니다. 이 문제를 해결하려면 다음

  • 바로 고토 SSMS에서 restoredDB> "속성"> "옵션"> "서비스 브로커"그룹에 이르기까지 스크롤을 클릭하고 "브로커 사용"속성 값을 확인합니다. False로 설정하면 True로 변경하면 이 문제를 해결합니다.