1

我知道我们可以利用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

谢谢

4

1 回答 1

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 进行澄清以解释这一点。同时,请注意使用该子句不支持在TYPEor上进行选择。除了渠道之外,还有其他情况让您遇到问题吗?CHLTYPEWHERELKNK

更新
回应评论,有两件事要注意。首先,根据信息中心,“您不能将通用过滤器值用于具有数值或一组值之一的参数。” 例如,这意味着指定是无效的,DIS CHL(*) WHERE(MCATYPE LK P*)因为它是MCATYPE由一组值中的一个指定的。它只能是PROCESSTHREAD。指定也无效,DIS CHL(*) WHERE(LONGTMR LK 1*)因为LONGTMR它采用数值。

感兴趣的第二项是WHERE子句中引用的语法。与所有MQSC参数一样,该WHERE子句将不带引号的值折叠为大写。由于 WebSphere MQ 以区分大小写的方式评估这些,因此类似DIS Q(*) WHERE(DESCR LK W*)的方法之所以有效,是因为许多队列都有一个以开头的描述WebSphere并且大写W匹配。但是,DIS Q(*) WHERE(DESCR LK We*)失败是因为小写e被折叠成大写,然后与描述字段中的值不匹配。在这里起作用DIS Q(*) WHERE(DESCR LK 'We*')的是字符串说明符被单引号引起来的地方。

因此,您看到的问题可能是由于对LK作为枚举一部分的字符串值使用运算符,或者可能是由于区分大小写无法匹配未加引号的过滤器值。

当过滤器关键字是列表时,CTand和它们的补语是要使用的运算符。CTG例如,在NAMELIST对象中,属性NAMES包含值列表。类似的东西WHERE(NAMES LK SYS*)会模棱两可,因为它LK是在一元值上运行的。因此CTCTG作为在集合上工作的运算符提供。演示此语法的几个示例将是:

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

第一个显示属性NAMELIST中的一个条目NAMES完全匹配的任何对象。第二个允许基于通用字符串前缀的类似匹配。如果预期值不是全部大写,或者该值包含嵌入空格,请务必引用。

于 2012-11-20T04:25:53.993 回答