我知道我们可以使用where filter
来帮助您在运行 runmqsc 期间获得更具体的结果。我对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
由于
答案 0 :(得分:2)
目前尚不清楚您是否遇到其他对象类型的问题,但对于频道,不允许基于频道类型进行过滤。这可能是因为无论如何都始终支持按类型进行选择。只需在display命令中指定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
其他,而不是选择频道,我已要求对页面进行说明以解释这一点。在此期间,请注意使用TYPE
子句不支持CHLTYPE
或WHERE
上的选择。是否存在您在使用LK
和NK
时遇到问题的频道以外的情况?
<强>更新强>
回应评论,有两点需要注意。首先,根据信息中心,“您不能对具有数值或具有一组值的参数使用通用过滤器值。”这意味着,例如,指定DIS CHL(*) WHERE(MCATYPE LK P*)
无效,因为MCATYPE
由一组值中的一个指定。它只能是PROCESS
或THREAD
。指定DIS CHL(*) WHERE(LONGTMR LK 1*)
也不是有效的,因为LONGTMR
采用数值。
第二个感兴趣的项目是WHERE
子句中引用的语法。与所有MQSC
参数一样,WHERE
子句将未加引号的值折叠为UPPER CASE。由于WebSphere MQ以区分大小写的方式评估这些,因此DIS Q(*) WHERE(DESCR LK W*)
之类的工作正常,因为许多队列的描述以WebSphere
开头,大写W
匹配。但是,DIS Q(*) WHERE(DESCR LK We*)
失败,因为小写e
折叠为大写,然后与描述字段中的值不匹配。这里的工作是DIS Q(*) WHERE(DESCR LK 'We*')
,其中字符串说明符是单引号。
因此,您看到的问题可能是由于LK
运算符对作为枚举一部分的字符串值的使用,或者可能是由于区分大小写无法匹配未加引号的过滤器值。
CT
和CTG
及其补语是filter关键字为列表时使用的运算符。例如,在NAMELIST
对象中,属性NAMES
包含值列表。 WHERE(NAMES LK SYS*)
之类的内容会模棱两可,因为LK
对一元值进行操作。因此,CT
和CTG
作为运算符提供。然后用几个例子演示这种语法:
DIS NAMELIST(*) WHERE(NAMES CT SYSTEM.BROKER.DEFAULT.STREAM)
DIS NAMELIST(*) WHERE(NAMES CTG SYS*)
第一个显示NAMELIST
属性中的一个条目与NAMES
属性完全匹配的{{1}}个对象。第二个允许基于通用字符串前缀的类似匹配。如果预期值不是所有UPPER CASE,或者值包含嵌入空间,请务必引用。