上一主题: 默认 SQL 语句规范化程序下一主题: 故障排除和提示


自定义 SQL 语句规范化程序

SQL 代理允许用户添加扩展来执行自定义规范化。 为此,请创建一个 DLL 文件,其中包含由 SQL 代理实施的规范化方案。

应用 SQL 语句规范化程序扩展:

  1. 创建扩展 DLL 文件。

    SQL 规范化程序扩展文件的入口点类必须实施 com.wily.introscope.agent.trace.ISqlNormalizer 接口。

    创建 DLL 扩展文件包括创建清单文件,该清单文件包含下面步骤 2 中详细介绍的 SQL 规范化程序扩展的特定键。 然而,要使扩展能够正常运行,还需要其他常规键。 这些键是您将要用来构建任意扩展文件的类型。 创建的扩展文件与数据库 SQL 语句文本规范化相关,例如 Backends|{backendName}|SQL|{sqlType}|{actualSQLStatement} 节点下的度量标准。 {actualSQLStatement} 由 SQL 规范化程序进行规范化。

  2. 将以下键放置在所创建扩展的清单中:
    com-wily-Extension-Plugins-List:testNormalizer1
    

    注意:此键的值可为任意值。 在本例中,testNormalizer1 用作示例。 无论您为此键指定何值,请在以下键中使用该值。

    com-wily-Extension-Plugin-testNormalizer1-Type: sqlnormalizer
    com-wily-Extension-Plugin-testNormalizer1-Version: 1
    com-wily-Extension-Plugin-testNormalizer1-Name: normalizer1
    

    注意:上述键应当包含规范化程序的唯一名称,例如 normalizer1。

    com-wily-Extension-Plugin-testNormalizer1-Entry-Point-Class: <Thefully-qualified classname of your implementation of ISQLNormalizer>
    
  3. 将创建的扩展文件放在 <Agent_Home>\wily\ext 目录中。
  4. IntroscopeAgent.profile 中,找到以下属性并进行设置:
    introscope.agent.sqlagent.normalizer.extension
    

    从所创建扩展的清单文件中,将属性设置为 com-wily-Extension-Plugin-{plugin}-Name。 此属性的值不区分大小写。 例如:

    introscope.agent.sqlagent.normalizer.extension=normalizer1
    

    注意:这是一个热属性。 更改扩展名称将导致重新注册扩展。

  5. IntroscopeAgent.profile 中,您可以选择性地添加以下属性来设置错误限制计数:
    introscope.agent.sqlagent.normalizer.extension.errorCount
    

    有关错误和异常的更多信息,请参阅异常

    注意:如果自定义规范化程序扩展抛出的错误超过了错误限制计数,将禁用扩展。

  6. 保存 IntroscopeAgent.profile
  7. 重新启动应用程序。

异常

如果创建的扩展针对某个查询抛出了异常,默认 SQL 语句规范化程序将为该查询使用默认的规范化方案。 发生这种情况时,将记录一条 ERROR 消息,指出扩展抛出了异常,还会记录一条包含堆栈跟踪信息的 DEBUG 消息。 但是,抛出五个此类异常之后,默认 SQL 语句规范化程序将禁用所创建的扩展,并停止尝试将创建的扩展用于将来的查询,直到更改了规范化程序。

空字符串

如果创建的扩展针对某个查询返回了空字符串,StatementNormalizer 将为该查询使用默认的规范化方案,并记录一条 INFO 消息,指出扩展返回了空值。 但是,返回五个此类空字符串之后,StatementNormalizer 将停止记录消息,但是将尝试继续使用扩展。