我正在运行日志解析器来查找日志文件中的 SQL 错误。如果搜索字符串(正则表达式)的计算结果为真,则将标记该行。到目前为止,我使用的是搜索表达式“SQL0”,这是我们的 DBA 提供给我的。但是,我最近发现有一些值得注意的 SQL 错误以“SQL1”开头。
我发现一些参考资料,负数 SQL 错误代码表示语句失败。所以我现在的想法是搜索“SQL[0-9]+N”(SQL 错误消息的数字以 N 结尾)。这会找到所有 SQL 错误代码吗?
更新:我正在 DB2 数据库上运行自动脚本。我需要解析这些脚本的日志以验证执行期间是否发生错误。
答案1
最后我找到了我所寻找的东西:
消息结构
消息帮助描述了消息的原因并描述了您应该针对该消息采取的任何操作。
消息标识符由三个字符的消息前缀、四位或五位数字的消息编号以及单个字母的后缀组成。例如,SQL1042C。有关消息前缀的列表,请参阅调用消息帮助和其他 DB2 消息。单个字母的后缀描述了错误消息的严重性。
一般来说,以 C 结尾的消息标识符表示严重消息;以 E 结尾的消息标识符表示紧急消息;以 N 结尾的消息标识符表示错误消息;以 W 结尾的消息标识符表示警告消息;以 I 结尾的消息标识符表示信息消息。
....
对于 SQL 消息,以 C 结尾的消息标识符表示严重系统错误;以 N 结尾的消息标识符表示错误消息;以 W 结尾的消息标识符表示警告或信息消息。
答案2
如果我理解正确,我在 Google 上找到的内容,你的错误信息如下所示:
SQL0204N "Some string explaining the error."
该数字似乎就是错误代码,我猜测前导 0 表示此示例是负错误代码 204。数字中的前导 1 将表示正错误代码,因此 1204 为 +204,0204 为 -204。
Grepping"SQL[0-9]+N"
将找到所有符合该模式的错误消息,但我无法验证 DB2 不会产生其他类型的错误。