2012-11-20 4 views
1

나는 runmqsc을 실행하는 동안보다 구체적인 결과를 얻을 수 있도록 where filter을 사용할 수 있음을 알고 있습니다. LT、GT、EQ、NE、LE and GE과 같은 연산자에는 아무런 문제가 없습니다. 그러나 LK、NL처럼 항상 실패했습니다. 아래 내용을 참조하십시오.연산자를 사용하여 필터 절을 사용하는 방법은 무엇입니까?

dis chl(SERVER.C01) 
27 : dis chl(SERVER.C01) 
AMQ8414: 显示通道细节。 
CHANNEL(SERVER.C01)      CHLTYPE(SVRCONN) 
ALTDATE(2012-08-27)      ALTTIME(16.05.40) 
COMPHDR(NONE)       COMPMSG(NONE) 
DESCR()        HBINT(300) 
KAINT(AUTO)        MAXINST(999999999) 
MAXINSTC(999999999)      MAXMSGL(4194304) 
MCAUSER()        MONCHL(QMGR) 
RCVDATA()        RCVEXIT() 
SCYDATA()        SCYEXIT() 
SENDDATA()        SENDEXIT() 
SHARECNV(10)       SSLCAUTH(REQUIRED) 
SSLCIPH()        SSLPEER() 
TRPTYPE(TCP) 
dis chl(*) where(type lk SVRC*) 
    28 : dis chl(*) where(chltype lk SVRC*) 
AMQ8569: 过滤器规范中的错误 
dis chl(*) where(chltype lk SVRC* 

AMQ8427: MQSC 命令的有效语法为: 

DISPLAY display_cmd 
WHERE(filter_keyword operator filter_value) 

operator := [ LT | GT | EQ | NE | LE | GE | CT | EX | LK | NL | CTG | EXG ] 

또한 CT and EX은 어떻습니까? 다른 개체 유형이 문제가 있는지 여부 그것은 분명하지 않다

WebSphere MQ 
7.0.1.9 

감사

답변

2

을 좀 도와하지만 채널로, 채널 유형에 따라 필터링은 허용되지 않습니다하시기 바랍니다. 이는 유형별 선택이 항상 어쨌든 지원 되었기 때문일 수 있습니다. 그냥 디스플레이 명령에 TYPE 또는 CHLTYPE을 지정

dis chl(*) chltype(svrconn) 
    1 : dis chl(*) chltype(svrconn) 
AMQ8414: Display Channel details. 
    CHANNEL(SYSTEM.AUTO.SVRCONN)   CHLTYPE(SVRCONN) 
AMQ8414: Display Channel details. 
    CHANNEL(SYSTEM.DEF.SVRCONN)    CHLTYPE(SVRCONN) 
dis chl(*) type(svrconn) 
    2 : dis chl(*) type(svrconn) 
AMQ8414: Display Channel details. 
    CHANNEL(SYSTEM.AUTO.SVRCONN)   CHLTYPE(SVRCONN) 
AMQ8414: Display Channel details. 
    CHANNEL(SYSTEM.DEF.SVRCONN)    CHLTYPE(SVRCONN) 

정보 센터 페이지를 DISPLAY CHANNEL 상태에 대한이 DISPLAY 명령에 대한 속성을 표시 할 수 있습니다

거의 모든 매개 변수를. 그러나 CMDSCOPE, QSGDISP 또는 MCANAME 매개 변수를 필터 키워드로 사용할 수 없습니다. 채널을 선택하는데도 사용되는 경우 TYPE (또는 CHLTYPE)을 사용할 수 없습니다.

난 당신이 채널을 선택하는 것보다 TYPE 또는 CHLTYPE다른을 사용할 수있는 방법을 잘 모르겠어요 그리고 나는 그것을 설명하는 페이지로 만든 설명을 요청했습니다. 그 동안에 WHERE 절을 사용하면 TYPE 또는 CHLTYPE에 대한 선택이 지원되지 않습니다. LKNK으로 문제가 발생한 채널 이외의 다른 케이스가 있었습니까?

UPDATE
주석에 응답, 두 가지를 알고 있어야합니다. 첫째, Infocenter에 따라 "숫자 값을 가진 매개 변수 또는 값 집합 중 하나를 사용하여 매개 변수에 일반 필터 값을 사용할 수 없습니다." 예를 들어, MCATYPE이 값 집합 중 하나로 지정되기 때문에 DIS CHL(*) WHERE(MCATYPE LK P*)을 지정하는 것이 유효하지 않음을 의미합니다. 단지 PROCESS 또는 THREAD 일 수 있습니다. LONGTMR이 숫자 값을 가지므로 DIS CHL(*) WHERE(LONGTMR LK 1*)을 지정하는 것이 유효하지 않습니다.

두 번째 항목은 WHERE 절의 인용 구문입니다. MQSC 매개 변수와 마찬가지로 WHERE 절은 인용되지 않은 값을 대문자로 변환합니다. WebSphere MQ는 대소 문자를 구별하여이를 평가하므로, 많은 큐가 WebSphere으로 시작하고 대문자가 W으로 시작하는 설명을 가지기 때문에 DIS Q(*) WHERE(DESCR LK W*)과 같은 것이 작동합니다. 그러나 DIS Q(*) WHERE(DESCR LK We*)은 소문자 e이 대문자로 접혀서 설명 필드의 값과 일치하지 않으므로 실패합니다. 여기서 작동하는 것은 DIS Q(*) WHERE(DESCR LK 'We*')입니다. 여기서 문자열 지정자는 작은 따옴표입니다.

표시되는 문제는 열거 형의 문자열 값에 대한 연산자 또는 인용 부호가없는 필터 값과 일치하지 않는 대/소문자 구분 때문에 LK 연산자를 사용했기 때문일 수 있습니다.

CTCTG과 그 보완 항목은 filter 키워드가 목록 일 때 사용할 연산자입니다. 예를 들어 NAMELIST 개체의 경우 NAMES 특성에 값 목록이 포함되어 있습니다. WHERE(NAMES LK SYS*)과 같은 것은 LK이 단항 값에서 작동하기 때문에 모호합니다. 따라서 CTCTG은 세트에서 작동하는 연산자로 제공됩니다. 이 구문을 입증하는 사례 몇 가지 다음과 같다 : 어떤

DIS NAMELIST(*) WHERE(NAMES CT SYSTEM.BROKER.DEFAULT.STREAM) 
DIS NAMELIST(*) WHERE(NAMES CTG SYS*) 

첫 번째 표시 NAMES 속성의 항목 중 하나가 정확히 일치 NAMELIST 객체. 두 번째는 일반 문자열 접두사를 기반으로 유사한 일치를 허용합니다. 예상 값이 모든 대문자 이외의 값이거나 값에 포함 된 공백이 포함되어있는 경우에는 반드시 인용해야합니다.

+1

어 .... 솔직히 말하면, 저는 LK, NL, CT 및 EX 연산자를 사용하려고합니다. 그래서 위의 예에서 무작위로 CHLTYPE 속성을 선택했습니다. 특별한 것은 없습니다. 롭, 운영자 LK와 CT에 대한 실제 사용법을 알려 줄 수 있습니까? – wing2ofsky

+0

그게 내가 원하는 건데 당신의 설명이 아주 분명합니다. 항상 고마워요 Rob – wing2ofsky

+0

도와 줘서 기쁩니다! 솔직히, 나는 이것에 대한 새로운 연구를 배웠다. 전에 CT 나 CTG를 사용한 적이 없었습니다. –

관련 문제