【问题标题】:How to pass query time out parameter to DB2 stored Proc如何将查询超时参数传递给 DB2 存储的 Proc
【发布时间】:2014-01-30 19:48:31
【问题描述】:

我有一个界面,用户可以在其中选择存储过程并将参数传递给存储过程。

根据用户的选择,查询可以运行很长时间。

如果查询时间超过 5 分钟,我想停止查询并向用户发送电子邮件,要求他与开发人员联系。

基本上我们如何将超时参数传递给查询?

【问题讨论】:

    标签: java sql stored-procedures db2


    【解决方案1】:

    不可能在同一个 SQL 存储过程中进行,因为这是一个顺序执行,不可能派生一个连接或执行并行执行。

    您最终可以在 Java 或 C 中创建一个外部存储过程,该过程将创建一个用于监控目的的线程,然后在时间过多时触发作业的完成。

    此外,您可以在 SP 中创建一个不定式循环,该循环将每分钟激活一次以检查进程,并杀死那些花费超过一定时间的进程,但不建议这样做。

    您可以使用内置模块UTL_MAIL 发送电子邮件并通过admin_cmd 终止进程,但您必须并行创建一个监控进程,而这在同一连接中是不可能的。

    您可以在 Serge Rielau 的博客中查看他的文章,该文章可能会给您很多想法:https://www.ibm.com/developerworks/community/blogs/SQLTips4DB2LUW/entry/sleep?lang=en

    【讨论】:

      【解决方案2】:

      查询超时是一个客户端配置参数,通过db2cli.inidb2dsdriver.cfg 或JDBC 连接属性设置,具体取决于客户端版本和类型。要在运行存储过程的服务器端强制执行查询运行时间限制,您需要使用 Workload Manager。

      在任何一种情况下,我认为您都无法向客户发送电子邮件通知。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2017-12-29
        • 1970-01-01
        • 2017-03-08
        • 2020-01-06
        • 2017-05-28
        • 2018-09-30
        • 1970-01-01
        相关资源
        最近更新 更多