다음을 통해 공유


ssbdiagnose 유틸리티(Service Broker)

적용 대상: SQL Server Azure SQL Managed Instance

ssbdiagnose 유틸리티는 Service Broker 대화 또는 Service Broker 서비스 구성의 문제를 보고합니다. 두 서비스 또는 단일 서비스에 대한 구성 검사를 수행할 수 있습니다. 문제는 명령 프롬프트 창에서 사람이 읽을 수 있는 텍스트로 보고되거나 파일 또는 다른 프로그램으로 리디렉션될 수 있는 서식이 지정된 XML로 보고됩니다.

구문

  
ssbdiagnose   
[ [ -XML ]  
    [ -LEVEL { ERROR | WARNING | INFO } ]  
  [-IGNORE error_id ] [ ...n]  
    [ <baseconnectionoptions> ]  
  { <configurationreport> | <runtimereport> }  
]  
| -?  
  
<configurationreport> ::=  
    CONFIGURATION  
  { [ FROM SERVICE service_name  
      [ <fromconnectionoptions> ]  
      [ MIRROR <mirrorconnectionoptions> ]  
    ]  
    [ TO SERVICE service_name[, broker_id ]  
      [ <toconnectionoptions> ]  
      [ MIRROR <mirrorconnectionoptions> ]  
    ]  
  }  
    ON CONTRACT contract_name  
  [ ENCRYPTION { ON | OFF | ANONYMOUS } ]  
  
<runtime_report> ::=  
    RUNTIME  
    [-SHOWEVENTS ]  
        [ -NEW  
         [ -ID { conversation_handle  
                | conversation_group_id  
                 | conversation_id  
                  }  
        ] [ ...n]  
        ]  
    [ -TIMEOUT timeout_interval ]  
    [ <runtimeconnectionoptions> ]  
  
<baseconnectionoptions> ::=  
  <connectionoptions>  
  
<fromconnectionoptions> ::=  
  <connectionoptions>  
  
<toconnectionoptions> ::=  
  <connectionoptions>  
  
<mirrorconnectionoptions> ::=  
  <connectionoptions>  
  
<runtimeconnectionoptions> ::=  
  [ CONNECT TO <connectionoptions> ] [ ...n]  
  
<connectionoptions> ::=  
    [ -E | { -U login_id [ -P password ] } ]  
  [ -S server_name[\instance_name] ]  
  [ -d database_name ]  
  [ -l login_timeout ]  
  

명령줄 옵션

-XML
ssbdiagnose 출력을 형식이 지정된 XML로 생성되도록 지정합니다. 이 출력은 파일이나 다른 애플리케이션으로 리디렉션될 수 있습니다. -XML을 지정하지 않으면 ssbdiagnose 출력은 사람이 읽을 수 있는 텍스트로 형식이 지정됩니다.

-LEVEL { ERROR | WARNING | INFO}
보고할 메시지의 수준을 지정합니다.

ERROR: 오류 메시지만 보고합니다.

WARNING: 오류 및 경고 메시지를 보고합니다.

INFO: 오류, 경고 및 정보 메시지를 보고합니다.

기본 설정은 WARNING입니다.

-IGNORE error_id
지정된 error_id 의 오류 또는 메시지가 보고서에 포함되지 않도록 지정합니다. -IGNORE를 여러 번 지정하여 여러 메시지 ID를 표시하지 않을 수 있습니다.

<baseconnectionoptions>
연결 옵션이 특정 절에 포함되지 않은 경우 ssbdiagnose에서 사용하는 기본 연결 정보를 지정합니다. 특정 절에 지정된 연결 정보는 baseconnectionoption 정보를 재정의합니다. 이 작업은 각 매개 변수에 대해 개별적으로 수행됩니다. 예를 들어, baseconnetionoptions-S-d가 모두 지정되고 toconnetionoptions-d만 지정된 경우 ssbdiagnosebaseconnetionoptions의 -S와 toconnetionoptions의 -d를 사용합니다.

CONFIGURATION
Service Broker 서비스 쌍 간 구성 오류 또는 단일 서비스 구성 오류에 대한 보고서를 요청합니다.

FROM SERVICE service_name
대화를 시작하는 서비스를 지정합니다.

<fromconnectionoptions>
시작자 서비스를 보유하는 데이터베이스에 연결하는 데 필요한 정보를 지정합니다. fromconnectionoptions 를 지정하지 않은 경우 ssbdiagnosebaseconnectionoptions 의 연결 정보를 사용하여 시작자 데이터베이스에 연결합니다. fromconnectionoptions가 지정된 경우 초기자 서비스를 포함하는 데이터베이스를 포함해야 합니다. fromconnectionoptions가 지정되지 않은 경우 baseconnectionoptions는 초기자 데이터베이스를 지정해야 합니다.

TO SERVICE service_name[, broker_id ]
대화의 대상이 되는 서비스를 지정합니다.

service_name: 대상 서비스의 이름을 지정합니다.

broker_id: 대상 데이터베이스를 식별하는 Service Broker ID를 지정합니다. broker_id는 GUID입니다. 대상 데이터베이스에서 다음 쿼리를 실행하여 찾을 수 있습니다.

SELECT service_broker_guid  
FROM sys.databases  
WHERE database_id = DB_ID();  

<toconnectionoptions>
대상 서비스를 보유하는 데이터베이스에 연결하는 데 필요한 정보를 지정합니다. toconnectionoptions를 지정하지 않은 경우 ssbdiagnosebaseconnectionoptions의 연결 정보를 사용하여 대상 데이터베이스에 연결합니다.

MIRROR
연결된 Service Broker 서비스가 미러된 데이터베이스에서 호스팅되도록 지정합니다. ssbdiagnose는 서비스에 대한 경로가 CREATE ROUTE에 MIRROR_ADDRESS가 지정된 미러링된 경로인지 확인합니다.

<mirrorconnectionoptions>
미러 데이터베이스에 연결하는 데 필요한 정보를 지정합니다. mirrorconnectionoptions를 지정하지 않은 경우 ssbdiagnosebaseconnectionoptions의 연결 정보를 사용하여 미러 데이터베이스에 연결합니다.

ON CONTRACT contract_name
ssbdiagnose 가 지정된 계약을 사용하는 구성만 검사하도록 요청합니다. ON CONTRACT를 지정하지 않으면 ssbdiagnose는 DEFAULT라는 계약에 대해 보고합니다.

ENCRYPTION { ON | OFF | ANONYMOUS }
지정된 암호화 수준에 대해 대화 상자가 올바르게 구성되었는지 확인을 요청합니다.

ON: 기본 설정. 전체 대화 보안이 구성됩니다. 인증서가 대화의 양측에 배포되었고, 원격 서비스 바인딩이 있으며, 대상 서비스에 대한 GRANT SEND 문이 시작 사용자를 지정했습니다.

OFF: 대화 상자 보안이 구성되지 않았습니다. 인증서가 배포되지 않았고, 원격 서비스 바인딩이 생성되지 않았으며, 초기자 서비스에 대한 GRANT SEND가 public 역할을 지정했습니다.

ANONYMOUS: 익명 대화 상자 보안이 구성됩니다. 하나의 인증서가 배포되었고, 원격 서비스 바인딩이 익명 절을 지정했으며, 대상 서비스에 대한 GRANT SEND가 public 역할을 지정했습니다.

RUNTIME
Service Broker 대화에 대해 런타임 오류를 일으키는 문제에 대한 보고서를 요청합니다. -NEW 또는 -ID가 지정되지 않은 경우 ssbdiagnose는 연결 옵션에 지정된 모든 데이터베이스의 모든 대화를 모니터링합니다. -NEW 또는 -ID 를 지정할 경우 ssbdiagnose 는 매개 변수에 지정된 ID 목록을 작성합니다.

ssbdiagnose는 실행되는 동안 런타임 오류를 나타내는 모든 SQL Server Profiler 이벤트를 기록합니다. 즉, 지정된 ID에 대해 발생하는 이벤트뿐 아니라 시스템 수준 이벤트도 기록합니다. 런타임 오류가 발생하면 ssbdiagnose는 연결된 구성에서 구성 보고서를 실행합니다.

기본적으로 런타임 오류는 출력 보고서에 포함되지 않고 구성 분석의 결과만 포함됩니다. -SHOWEVENTS를 사용하여 런타임 오류를 보고서에 포함시킵니다.

-SHOWEVENTS
RUNTIME 보고 동안 ssbdiagnose가 SQL Server Profiler 이벤트를 보고하도록 지정합니다. 오류 조건으로 간주되는 이벤트만 보고됩니다. 기본적으로 ssbdiagnose 는 오류 이벤트를 모니터링만 하고 출력에 보고하지 않습니다.

-NEW
ssbdiagnose가 실행되기 시작한 후에 시작되는 첫 번째 대화의 런타임 모니터링을 요청합니다.

-ID
지정된 대화 요소의 런타임 모니터링을 요청합니다. -ID 는 여러 번 지정할 수 있습니다.

대화 핸들을 지정하면 연결된 대화 엔드포인트와 연결된 이벤트만 보고됩니다. 대화 ID를 지정하면 해당 대화와 해당 초기자 및 대상 엔드포인트에 대한 모든 이벤트가 보고됩니다. 대화 그룹 ID를 지정할 경우 대화 그룹에 있는 모든 대화와 엔드포인트에 대한 이벤트가 모두 보고됩니다.

conversation_handle
애플리케이션에서 대화 엔드포인트를 식별하는 고유 식별자입니다. 대화 핸들은 대화의 각 엔드포인트에 고유하기 때문에 시작자 엔드포인트와 대상 엔드포인트는 서로 다른 대화 핸들을 갖습니다.

대화 핸들은 BEGIN DIALOG 문의 @dialog_handle 매개 변수 및 RECEIVE 문의 결과 집합에 있는 conversation_handle 열을 통해 애플리케이션에 반환됩니다.

대화 핸들은 sys.transmission_queuesys.conversation_endpoints 카탈로그 뷰의 conversation_handle 열에 보고됩니다.

conversation_group_id
대화 그룹을 식별하는 고유 식별자입니다.

대화 그룹 ID는 GET CONVERSATION GROUP 문의 @conversation_group_id 매개 변수와 RECEIVE 문의 결과 집합에 있는 conversation_group_id 열에 의해 애플리케이션에 반환됩니다.

대화 그룹 ID는 sys.conversation_groupssys.conversation_endpoints 카탈로그 뷰의 conversation_group_id 열에 보고됩니다.

conversation_id
대화를 식별하는 고유 식별자입니다. 대화 ID는 대화의 초기자 및 대상 엔드포인트 모두에 대해 동일합니다.

대화 ID는 sys.conversation_endpoints 카탈로그 뷰의 conversation_id 열에서 보고됩니다.

-TIMEOUT timeout_interval
RUNTIME 보고서가 실행되는 시간(초)을 지정합니다. -TIMEOUT 을 지정하지 않을 경우 런타임 보고서가 무기한 실행됩니다. -TIMEOUTCONFIGURATION 보고서가 아닌 RUNTIME 보고서에만 사용됩니다. Ctrl+C를 사용하면 -TIMEOUT 을 지정하지 않은 경우 ssbdiagnose 를 종료하거나 제한 시간 간격이-만료되기 전에 런타임 보고서를 종료할 수 있습니다. timeout_interval은 1에서 2,147,483,647 사이의 숫자여야 합니다.

<runtimeconnectionoptions>
모니터링 중인 대화 요소와 연결된 서비스를 포함하는 데이터베이스에 대한 연결 정보를 지정합니다. 모든 서비스가 동일한 데이터베이스에 있는 경우 하나의 CONNECT TO 절만 지정하면 됩니다. 서비스가 별도의 데이터베이스에 있는 경우 각 데이터베이스에 대한 CONNECT TO 절을 제공해야 합니다. runtimeconnectionoptions를 지정하지 않은 경우 ssbdiagnosebaseconnectionoptions의 연결 정보를 사용하여 시작자 데이터베이스에 연결합니다.

-E
현재 Windows 계정을 로그인 ID로 사용하여 데이터베이스 엔진 인스턴스에 대해 Windows 인증 연결을 엽니다. 로그인은 sysadmin 고정 서버 역할의 멤버여야 합니다.

-E 옵션은 SQLCMDUSER 및 SQLCMDPASSWORD 환경 변수의 사용자와 암호 설정을 무시합니다.

-E-U 를 둘 다 지정하지 않을 경우 ssbdiagnose 가 SQLCMDUSER 환경 변수의 값을 사용합니다. SQLCMDUSER도 설정되지 않은 경우 ssbdiagnose는 Windows 인증을 사용합니다.

-E 옵션과 함께 -U 옵션 또는 -P 옵션을 사용하면 오류 메시지가 생성됩니다.

-U login_id
지정된 로그인 ID를 사용하여 SQL Server 인증 연결을 엽니다. 로그인은 sysadmin 고정 서버 역할의 멤버여야 합니다.

-E-U 를 둘 다 지정하지 않을 경우 ssbdiagnose 가 SQLCMDUSER 환경 변수의 값을 사용합니다. SQLCMDUSER도 설정되지 않은 경우 ssbdiagnosessbdiagnose를 실행하는 사용자의 Windows 계정에 따라 Windows 인증 모드를 사용하여 연결을 시도합니다.

-U 옵션을 -E 옵션과 함께 사용하면 오류 메시지가 생성됩니다. -U 옵션 다음에 둘 이상의 인수를 지정하면 오류 메시지가 생성되고 프로그램이 종료됩니다.

-P password
-U 로그인 ID의 암호를 지정합니다. 암호는 대/소문자를 구분합니다. -U 옵션을 사용하고 -P 옵션을 사용하지 않는 경우 ssbdiagnose는 SQLCMDPASSWORD 환경 변수의 값을 사용합니다. SQLCMDPASSWORD도 설정하지 않을 경우 ssbdiagnose 는 사용자에게 암호를 묻는 메시지를 표시합니다.

Important

SET SQLCMDPASSWORD 명령을 입력하면 모니터에서 누구나 암호를 볼 수 있습니다.

암호 없이 -P 옵션을 지정하면 ssbdiagnose는 기본 암호(NULL)를 사용합니다.

Important

빈 암호를 사용하지 마세요. 강력한 암호를 사용하세요. 자세한 내용은 Strong Passwords을 참조하세요.

비밀번호 프롬프트는 Password:과 같이 콘솔에 출력되어 표시됩니다.

사용자 입력이 숨겨집니다. 즉, 아무 것도 표시되지 않으며 커서 위치가 유지됩니다.

-P 옵션과 함께 -E 옵션을 사용하면 오류 메시지가 생성됩니다.

-P 옵션 다음에 둘 이상의 인수가 오면 오류 메시지가 생성됩니다.

-S server_name[\instance_name]
분석할 Service Broker 서비스를 보유한 데이터베이스 엔진의 인스턴스를 지정합니다.

해당 서버에 있는 기본 데이터베이스 엔진 인스턴스에 연결하려면 server_name을 지정합니다. 해당 서버에 있는 명명된 데이터베이스 엔진 인스턴스에 연결하려면 server_name\instance_name을 지정합니다. -S를 지정하지 않으면 ssbdiagnose는 SQLCMDSERVER 환경 변수의 값을 사용합니다. SQLCMDSERVER도 설정하지 않을 경우 ssbdiagnose 는 로컬 컴퓨터에 있는 기본 데이터베이스 엔진 인스턴스에 연결합니다.

-d database_name
분석할 Service Broker 서비스를 보유하는 데이터베이스를 지정합니다. 데이터베이스가 없을 경우에는 오류가 생성됩니다. -d를 지정하지 않으면 기본값은 로그인에 대한 기본 데이터베이스 속성에 지정된 데이터베이스입니다.

-l login_timeout
서버에 연결하려는 시도가 시간 초과되기 전의 시간(초)을 지정합니다. -l를 지정하지 않으면 ssbdiagnose는 SQLCMDLOGINTIMEOUT 환경 변수에 대해 설정된 값을 사용합니다. SQLCMDLOGINTIMEOUT이 설정되지 않은 경우 기본 제한 시간은 30초입니다. 로그인 제한 시간은 0과 65534 사이의 숫자여야 합니다. 입력한 값이 숫자가 아니거나 해당 범위에 속하지 않는 경우 ssbdiagnose는 오류 메시지를 생성합니다. 0 값은 제한 시간을 무한으로 지정합니다.

-?
명령줄 도움말을 표시합니다.

설명

ssbdiagnose 를 사용하여 다음을 수행할 수 있습니다.

  • 새로 구성된 Service Broker 애플리케이션에 구성 오류가 없는지 확인합니다.

  • 기존 Service Broker 애플리케이션의 구성을 변경한 후에 구성 오류가 없는지 확인합니다.

  • Service Broker 데이터베이스가 분리된 다음, 새 데이터베이스 엔진 인스턴스에 다시 연결된 후에 구성 오류가 없는지 확인합니다.

  • 서비스 간에 메시지가 성공적으로 전송되지 않을 때 구성 오류가 있는지 여부를 조사합니다.

  • Service Broker 대화 요소 집합에서 발생하는 모든 오류에 대한 보고서를 가져옵니다.

구성 보고

대화에서 사용하는 구성을 올바르게 분석하려면 대화에서 사용하는 것과 동일한 옵션을 사용하는 ssbdiagnose 구성 보고서를 실행합니다. ssbdiagnose에 대화에서 사용되는 것보다 낮은 수준의 옵션을 지정하는 경우 ssbdiagnose는 대화에 필요한 조건을 보고하지 않을 수 있습니다. ssbdiagnose에 더 높은 수준의 옵션을 지정하는 경우 대화에 필요하지 않은 항목을 보고할 수 있습니다. 예를 들어 동일한 데이터베이스에 있는 두 서비스 간의 대화는 ENCRYPTION OFF를 사용하여 실행할 수 있습니다. ssbdiagnose 를 실행하여 두 서비스 간 구성의 유효성을 검사하는 경우 기본 ENCRYPTION ON 설정을 사용하면 ssbdiagnose 가 데이터베이스에 마스터 키가 없음을 보고합니다. 마스터 키는 대화에 필요하지 않습니다.

ssbdiagnose 구성 보고서는 실행될 때마다 하나 또는 한 쌍의 Service Broker 서비스만 분석합니다. 여러 쌍의 Service Broker 서비스를 보고하려면 ssbdiagnose를 여러 번 호출하는 .cmd 명령 파일을 작성합니다.

런타임 보고

-RUNTIME을 지정할 경우 ssbdiagnoseruntimeconnectionoptionsbaseconnectionoptions 에 지정된 모든 데이터베이스를 검색하여 Service Broker ID 목록을 작성합니다. 작성되는 전체 ID 목록은 다음과 같이 -NEW 및 -ID가 어떻게 지정되는지에 따라 달라집니다.

  • -NEW 또는 -ID를 지정하지 않으면 목록에 연결 옵션에 지정된 모든 데이터베이스에 대한 모든 대화가 포함됩니다.

  • -NEW가 지정된 경우 ssbdiagnosessbdiagnose가 실행된 후 시작되는 첫 번째 대화에 대한 요소를 포함합니다. 여기에는 대상 대화 엔드포인트와 시작자 대화 엔드포인트 둘 다에 대한 대화 ID와 대화 핸들이 포함됩니다.

  • 대화 핸들을 사용하여 -ID를 지정하면 해당 핸들만 목록에 포함됩니다.

  • 대화 ID를 사용하여 -ID 가 지정된 경우에는 두 대화 엔드포인트 모두에 대한 대화 ID와 핸들이 목록에 추가됩니다.

  • 대화 그룹 ID를 사용하여 -ID를 지정하면 해당 그룹의 모든 대화 ID와 대화 핸들이 목록에 추가됩니다.

이 목록에는 연결 옵션에서 다루지 않는 데이터베이스의 요소가 포함되지 않습니다. 예를 들어 -ID를 사용하여 대화 ID를 지정하지만 대상 데이터베이스가 아닌 초기자 데이터베이스에 대한 runtimeconnectionoptions 절만 제공한다고 가정합니다. ssbdiagnose 는 해당 ID 목록에 대화 ID와 시작자 대화 핸들만 포함하고 대상 대화 핸들을 포함하지 않습니다.

ssbdiagnose 모니터는 runtimeconnectionoptionsbaseconnectionoptions에 지정된 데이터베이스에서 SQL Server Profiler 이벤트를 모니터링하며, 런타임 목록에 있는 하나 이상의 ID에서 오류가 발생했음을 나타내는 이벤트를 검색합니다. 또한ssbdiagnose 는 특별히 대화 그룹과 연관이 없는 시스템 수준 Service Broker 오류 이벤트를 검색합니다.

ssbdiagnose 는 대화 오류를 찾을 경우 구성 보고서를 추가로 실행하여 해당 이벤트의 근본 원인을 보고하려고 합니다. ssbdiagnose 는 데이터베이스의 메타데이터를 사용하여 해당 대화에 사용된 인스턴스, Service Broker ID, 데이터베이스, 서비스 및 계약을 파악한 다음 그런 다음 사용 가능한 모든 정보를 사용하여 구성 보고서를 실행합니다.

기본적으로 ssbdiagnose는 오류 이벤트를 보고하지 않습니다. 구성 검사 동안 발견된 기본 문제만 보고합니다. 이렇게 하면 보고된 정보의 양이 최소화되고 기본 구성 문제에 집중할 수 있습니다. -SHOWEVENTS를 지정하여 ssbdiagnose에서 발생한 오류 이벤트를 볼 수 있습니다.

ssbdiagnose에서 보고된 문제

ssbdiagnose는 세 가지 유형의 문제를 보고합니다. XML 출력 파일에서 각 클래스의 문제는 별도의 Issue 요소 형식으로 보고됩니다. ssbdiagnose에서 보고된 세 가지 유형의 문제는 다음과 같습니다.

진단
구성 문제를 보고합니다. 여기에는 CONFIGURATION 보고서가 실행 중이거나 RUNTIME 보고서의 구성 단계에서 발견된 문제가 포함됩니다. ssbdiagnose는 각 구성 문제를 한 번 보고합니다.

이벤트
RUNTIME 보고 동안 모니터링 중인 대화에서 문제가 발생했음을 나타내는 SQL Server Profiler 이벤트를 보고합니다. ssbdiagnose는 이벤트가 생성될 때마다 이벤트를 보고합니다. 여러 대화에서 문제가 발생하는 경우 이벤트를 여러 번 보고할 수 있습니다.

문제
ssbdiagnose가 구성 분석을 완료하지 못하거나 대화를 모니터링하지 못하게 하는 문제를 보고합니다.

sqlcmd 환경 변수

ssbdiagnose 유틸리티는 sqlcmd 유틸리티도 사용하는 SQLCMDSERVER, SQLCMDUSER, SQLCMDPASSWORD 및 SQLCMDLOGINTIMOUT 환경 변수를 지원합니다. 환경 변수는 명령 프롬프트 SET 명령을 사용하여 설정하거나 sqlcmd를 사용하여 실행하는 Transact-SQL 스크립트에서 setvar 명령을 사용하여 설정할 수 있습니다. sqlcmd에서 setvar를 사용하는 방법에 대한 자세한 내용은 스크립팅 변수와 함께 sqlcmd 사용을 참조하세요.

사용 권한

connectionoptions 절에서 -E 또는 -U 를 사용하여 지정된 로그인은 -S 에 지정된 인스턴스에 있는 sysadmin고정 서버 역할의 멤버여야 합니다.

예제

이 섹션에는 명령 프롬프트에서 ssbdiagnose를 사용하는 예제가 포함되어 있습니다.

A. 동일한 데이터베이스에서 두 서비스의 구성 확인

다음 예제에서는 다음이 true일 때 구성 보고서를 요청하는 방법을 보여줍니다.

  • 초기자와 대상 서비스가 동일한 데이터베이스에 있습니다.

  • 데이터베이스는 데이터베이스 엔진 기본 인스턴스에 있습니다.

  • 인스턴스는 ssbdiagnose가 실행되는 동일한 컴퓨터에 있습니다.

ssbdiagnose 유틸리티는 ON CONTRACT가 지정되지 않았기 때문에 DEFAULT 계약을 사용하는 구성을 보고합니다.

ssbdiagnose -E -d MyDatabase CONFIGURATION FROM SERVICE /test/initiator TO SERVICE /test/target  

B. 별개의 컴퓨터에 있지만 동일한 로그인을 사용하는 두 서비스의 구성 검사

다음 예에서는 시작자 서비스와 대상 서비스가 서로 다른 컴퓨터에 있지만 동일한 Windows 인증 로그인을 사용하여 액세스할 수 있는 경우 구성 보고서를 요청하는 방법을 보여 줍니다.

ssbdiagnose -E CONFIGURATION FROM SERVICE /text/initiator -S InitiatorComputer -d InitiatorDatabase TO SERVICE /test/target -S TargetComputer -d TargetDatabase ON CONTRACT TestContract  

C. 별개의 컴퓨터에 있으며 서로 다른 로그인을 사용하는 두 서비스의 구성 검사

다음 예에서는 시작자 서비스와 대상 서비스가 서로 다른 컴퓨터에 있고 각 데이터베이스 엔진인스턴스에 대해 서로 다른 SQL Server 인증 로그인이 필요한 경우 구성 보고서를 요청하는 방법을 보여 줍니다.

ssbdiagnose CONFIGURATION FROM SERVICE /text/initiator   
-S InitiatorComputer -U InitiatorLogin -p !wEx23Dvb   
-d InitiatorDatabase TO SERVICE /test/target -S TargetComputer   
-U TargetLogin -p ER!49jiy -d TargetDatabase ON CONTRACT TestContract  

D. 익명 암호화를 사용하여 별도의 컴퓨터에서 미러된 서비스 구성 확인

다음 예제에서는 초기자와 대상 서비스가 별도의 컴퓨터에 있고 초기자가 명명된 인스턴스에 미러링될 때 구성 보고서를 요청하는 방법을 보여 줍니다. 보고서는 서비스가 익명 암호화를 사용하도록 구성되어 있는지도 확인합니다.

ssbdiagnose -E CONFIGURATION FROM SERVICE /text/initiator   
-S InitiatorComputer -d InitiatorDatabase MIRROR   
-S MirrorComputer/MirrorInstance TO SERVICE /test/target   
-S TargetComputer -d TargetDatabase ON CONTRACT TestContract ENCRYPTION ANONYMOUS  

E. 두 계약의 구성 확인

다음 예제에서는 다음이 true일 때 구성 보고서를 요청하는 명령 파일을 작성하는 방법을 보여줍니다.

  • 초기자와 대상 서비스가 동일한 데이터베이스에 있습니다.

  • 데이터베이스는 데이터베이스 엔진 기본 인스턴스에 있습니다.

  • 인스턴스는 ssbdiagnose가 실행되는 동일한 컴퓨터에 있습니다.

ssbdiagnose가 실행 될 때마다 동일한 서비스 간의 다른 계약에 대한 구성을 보고합니다.

ssbdiagnose -E -d MyDatabase CONFIGURATION FROM SERVICE   
/test/initiator TO SERVICE /test/target ON CONTRACT PayRaiseContract  
ssbdiagnose -E -d MyDatabase CONFIGURATION FROM SERVICE /test/initiator   
TO SERVICE /test/target ON CONTRACT PromotionContract  

F. 시간 제한을 사용하여 로컬 컴퓨터에서 특정 대화의 상태 모니터링

다음 예제에서는 초기자 서비스와 대상 서비스가 ssbdiagnose를 실행하는 동일한 컴퓨터의 기본 인스턴스에서 동일한 데이터베이스에 있는 특정 대화를 모니터링하는 방법을 보여 줍니다. 시간 제한 간격은 20초로 설정됩니다.

ssbdiagnose -E -d TestDatabase RUNTIME -ID D68D77A9-B1CF-41BF-A5CE-279ABCAB140D -TIMEOUT 20  

G. 두 컴퓨터를 연결하는 대화의 상태 모니터링

다음 예에서는 시작자 서비스와 대상 서비스가 서로 다른 컴퓨터에 있는 특정 대화를 모니터링하는 방법을 보여 줍니다.

ssbdiagnose RUNTIME -ID D68D77A9-B1CF-41BF-A5CE-279ABCAB140D   
-TIMEOUT 10 CONNECT TO -E -S InitiatorComputer/InitiatorInstance   
-d InitiatorDatabase CONNECT TO -E -S TargetComputer/TargetInstance   
-d TargetDatabase  

H. 동일한 인스턴스의 두 데이터베이스에서 대화 상태 모니터링

다음 예에서는 시작자 서비스와 대상 서비스가 동일한 데이터베이스 엔진 인스턴스의 서로 다른 데이터베이스에 있는 특정 대화를 모니터링하는 방법을 보여 줍니다. 이 예제에서는 baseconnectionoptions를 사용하여 인스턴스 및 로그인 정보를 지정하고 두 개의 CONNECT TO 절을 사용하여 데이터베이스를 지정합니다. -SHOWEVENTS는 모든 런타임 이벤트가 보고서 출력에 포함되도록 지정됩니다.

ssbdiagnose -E -S TestComputer/DevTestInstance RUNTIME -SHOWEVENTS   
-ID 5094d4a7-e38c-4c37-da37-1d58b1cb8455 -TIMEOUT 10 CONNECT TO   
-d InitiatorDatabase CONNECT TO -d TargetDatabase  

I. 두 데이터베이스 간의 두 대화 상태 모니터링

다음 예에서는 시작자 서비스와 대상 서비스가 동일한 데이터베이스 엔진 인스턴스의 서로 다른 데이터베이스에 있는 두 대화를 모니터링하는 방법을 보여 줍니다. 이 예제에서는 baseconnectionoptions를 사용하여 인스턴스 및 로그인 정보를 지정하고 두 개의 CONNECT TO 절을 사용하여 데이터베이스를 지정합니다.

ssbdiagnose -E -S TestComputer/DevTestInstance RUNTIME   
-ID 5094d4a7-e38c-4c37-da37-1d58b1cb8455   
-ID 9b293be9-226b-4e22-e169-1d2c2c15be86 -TIMEOUT 10 CONNECT TO   
-d InitiatorDatabase CONNECT TO -d TargetDatabase  

J. 두 데이터베이스 간의 모든 대화 상태 모니터링

다음 예에서는 동일한 데이터베이스 엔진 인스턴스에 있는 두 데이터베이스 간의 모든 대화를 모니터링하는 방법을 보여 줍니다. 이 예제에서는 baseconnectionoptions를 사용하여 인스턴스 및 로그인 정보를 지정하고 두 개의 CONNECT TO 절을 사용하여 데이터베이스를 지정합니다.

ssbdiagnose -E -S TestComputer/DevTestInstance RUNTIME   
-TIMEOUT 10 CONNECT TO -d InitiatorDatabase CONNECT TO   
-d TargetDatabase  

K. 특정 오류 무시

다음 예에서는 현재 테스트 시스템의 활성화 구성 방식에서 알려진 오류(303 및 304)를 무시하는 방법을 보여 줍니다.

ssbdiagnose -IGNORE 303 -IGNORE 304 -E -d TestDatabase   
CONFIGURATION FROM SERVICE /test/initiator TO SERVICE /test/target   
ON CONTRACT TextContract  

12. ssbdiagnose XML 출력 리디렉션

다음 예제에서는 ssbdiagnose가 파일로 리디렉션되는 XML 파일로 출력을 생성하도록 요청하는 방법을 보여 줍니다. 이 예에서 생성하는 TestDiag.xml 파일은 나중에 ssbdiagnose XML 파일을 분석하거나 보고하는 애플리케이션을 사용하여 열거나 또는 XML Windows 메모장과 같은 일반 XML 편집기에서 볼 수 있습니다.

ssbdiagnose -XML -E -d MyDatabase CONFIGURATION FROM SERVICE   
/test/initiator TO SERVICE /test/target > c:\MyDiagnostics\TestDiag.xml  

13. 환경 변수 사용

다음 예제에서는 먼저 SQLCMDSERVER 환경 변수를 설정하여 서버 이름을 보유하도록 한 다음 -S를 지정하지 않고 ssbdiagnose를 실행합니다.

SET SQLCMDSERVER=MyComputer  
ssbdiagnose -XML -E -d MyDatabase CONFIGURATION FROM SERVICE   
/test/initiator TO SERVICE /test/target  

참고 항목

SQL Server Service Broker
BEGIN DIALOG CONVERSATION(Transact-SQL)
CREATE BROKER PRIORITY(Transact-SQL)
CREATE CERTIFICATE(Transact-SQL)
CREATE CONTRACT(Transact-SQL)
CREATE ENDPOINT(Transact-SQL)
CREATE MASTER KEY(Transact-SQL)
CREATE MESSAGE TYPE(Transact-SQL)
CREATE QUEUE(Transact-SQL)
CREATE REMOTE SERVICE BINDING(Transact-SQL)
CREATE ROUTE(Transact-SQL)
CREATE SERVICE(Transact-SQL)
RECEIVE(Transact-SQL)
sys.transmission_queue(Transact-SQL)
sys.conversation_endpoints(Transact-SQL)
sys.conversation_groups(Transact-SQL)