如果我有一个递归的 DB2 SQL 过程或函数,或者它有一个棘手的循环,并且该进程已变得无限,那么如果它已经在运行,我该如何杀死它?这是 DB2-for-i v7.3,使用 DBeaver SQL 进行开发。
在 SQL IDE 中简单地取消查询就足够了吗?我过去曾使用过长的查询来执行此操作,并且我总是收到“查询已取消”的通知。但是,对于无限循环或递归的过程,是否存在任何风险,该过程可能仍会在后台继续进行,直到出现崩溃并且 DBA 工作人员用干草叉和燃烧的 torch 敲打我的门..?
编辑:有人建议我的问题与 this one 重复。 ,但我在发帖之前读过那一篇,它不一样。这个问题是如何从一开始就防止无限循环的发生,但我的问题是如何杀死已经发生的无限循环。
最佳答案
取消应该可以,但是如果您可以在 WRKACTJOB 中找到正确的作业,那么您可以使用 OPTION(*IMMED) 结束它。
服务器作业应位于子系统 QUSWRRK 中,并命名为 QZDASOINIT。您要查找的那个将有您的用户 ID,如果它正在循环,它将具有 RUN 状态。这些工作通常在等待工作时就坐在 TIMW 上。这些是预启 Action 业,如果您手动结束一项作业,它会在需要时返回。
关于db2 - 在 DB2 SQL 中,如何终止已经陷入无限循环的递归函数调用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58018531/