【发布时间】:2014-01-30 19:48:31
【问题描述】:
我有一个界面,用户可以在其中选择存储过程并将参数传递给存储过程。
根据用户的选择,查询可以运行很长时间。
如果查询时间超过 5 分钟,我想停止查询并向用户发送电子邮件,要求他与开发人员联系。
基本上我们如何将超时参数传递给查询?
【问题讨论】:
标签: java sql stored-procedures db2
我有一个界面,用户可以在其中选择存储过程并将参数传递给存储过程。
根据用户的选择,查询可以运行很长时间。
如果查询时间超过 5 分钟,我想停止查询并向用户发送电子邮件,要求他与开发人员联系。
基本上我们如何将超时参数传递给查询?
【问题讨论】:
标签: java sql stored-procedures db2
不可能在同一个 SQL 存储过程中进行,因为这是一个顺序执行,不可能派生一个连接或执行并行执行。
您最终可以在 Java 或 C 中创建一个外部存储过程,该过程将创建一个用于监控目的的线程,然后在时间过多时触发作业的完成。
此外,您可以在 SP 中创建一个不定式循环,该循环将每分钟激活一次以检查进程,并杀死那些花费超过一定时间的进程,但不建议这样做。
您可以使用内置模块UTL_MAIL 发送电子邮件并通过admin_cmd 终止进程,但您必须并行创建一个监控进程,而这在同一连接中是不可能的。
您可以在 Serge Rielau 的博客中查看他的文章,该文章可能会给您很多想法:https://www.ibm.com/developerworks/community/blogs/SQLTips4DB2LUW/entry/sleep?lang=en
【讨论】:
查询超时是一个客户端配置参数,通过db2cli.ini、db2dsdriver.cfg 或JDBC 连接属性设置,具体取决于客户端版本和类型。要在运行存储过程的服务器端强制执行查询运行时间限制,您需要使用 Workload Manager。
在任何一种情况下,我认为您都无法向客户发送电子邮件通知。
【讨论】: