SQL 代理附带了一个扩展,该扩展根据可配置的正则表达式 (regex) 对 SQL 语句进行规范化。 该文件 (RegexNormalizerExtension.jar) 位于 <Agent_Home>/wily/core/ext 目录中。
有关如何使用正则表达式 SQL 语句规范化程序的示例,请参阅正则表达式 SQL 语句规范化程序示例。
应用正则表达式扩展
指定将用于覆盖预配置规范化方案的 SQL 规范化程序扩展的名称。 启用正则表达式扩展时,将此属性设置为 RegexSqlNormalizer。
此属性指定正则表达式组键,这些键将按排列顺序进行评估。 要启用正则表达式扩展,此属性是必需的。 没有默认值。
此属性指定用于与 SQL 语句匹配的正则表达式模式。 java.util.Regex package 类允许的所有有效正则表达式均可以在此处使用。 要启用正则表达式扩展,此属性是必需的。 没有默认值。
此属性指定替换字符串的格式。 java.util.Regex package 类允许的所有有效正则表达式均可以在此处使用。 要启用正则表达式扩展,此属性是必需的。 没有默认值。
如果此属性设置为 true,将针对所有正则表达式键组评估 SQL 字符串。 实施是连锁的。 因此,如果 SQL 字符串与多个键组匹配,则来自 group1 的规范化 SQL 输出将作为输入送入 group2,依此类推。
如果该属性设置为 false,只要键组与 SQL 字符串匹配,就会返回来自该组的规范化 SQL 输出。 MatchFallThrough 属性不会启用或禁用扩展。
例如,如果您有一个 SQL 字符串,例如:Select * from A where B,您可以设置以下属性:
introscope.agent.sqlagent.normalizer.regex.keys=key1,key2 introscope.agent.sqlagent.normalizer.regex.key1.pattern=A introscope.agent.sqlagent.normalizer.regex.key1.replaceFormat=X introscope.agent.sqlagent.normalizer.regex.key2.pattern=B introscope.agent.sqlagent.normalizer.regex.key2.replaceFormat=Y
如果 introscope.agent.sqlagent.normalizer.regex.matchFallThrough 为 false,则 SQL 会根据 key1 正则表达式进行规范化。该正则表达式的输出将为 Select * from X where B。 将返回此 SQL。
如果 introscope.agent.sqlagent.normalizer.regex.matchFallThrough 为 true,则 SQL 首先针对 key1 正则表达式进行规范化。 该正则表达式的输出为 Select * from X where B。 然后,此输出将被送入 key2 正则表达式。key2 正则表达式的输出为 Select * from X where Y。 将返回该 SQL。
注意:要启用正则表达式扩展,此属性不是必需的。
此属性指定模式匹配是否区分大小写。 默认值为 false。 要启用正则表达式扩展,此属性不是必需的。
如果此属性设置为 false,它会将 SQL 中首次出现的匹配模式替换为替换字符串。 如果此属性设置为 true,它会将 SQL 中出现的所有匹配模式均替换为替换字符串。
例如,如果您有一个 SQL 语句,例如:Select * from A where A like Z,则可以对属性进行如下设置:
introscope.agent.sqlagent.normalizer.regex.key1.pattern=A introscope.agent.sqlagent.normalizer.regex.key1.replaceFormat=X
如果 introscope.agent.sqlagent.normalizer.regex.key1.replaceAl 为 false,将会生成规范化的 SQL 语句:Select * from X where A like Z。
如果 introscope.agent.sqlagent.normalizer.regex.key1.replaceAl 为 true,将生成一个规范化 SQL 语句:Select * from X where X like Z。
默认值为 false。 要启用正则表达式扩展,此属性不是必需的。
注意:如果没有一个正则表达式模式与输入的 SQL 匹配,RegexNormalizer 将返回空字符串。 然后,语句规范化程序将使用默认的规范化方案。
重要信息! 上面列出的所有属性均为热属性,也就是说,保存 IntroscopeAgent.profile 之后,对这些属性所做的更改会立即生效。
|
版权所有 © 2013 CA。
保留所有权利。
|
|