我有一个界面,用户可以选择存储过程并将参数传递给存储过程。
根据用户选择的内容,查询可以运行很长时间。
如果查询时间超过5分钟,我想停止查询并向用户发送电子邮件,要求他与开发人员联系。
基本上我们如何将超时参数传递给查询?
答案 0 :(得分:2)
在同一个SQL存储过程中不可能这样做,因为这是一个顺序执行,并且没有任何可能分叉连接或执行并行执行。
您最终可以在Java或C中创建一个外部存储过程,它将创建一个用于监视目的的线程,然后在它花费太多时间时触发作业的最终确定。
此外,您可以在SP中创建一个不定式循环,每分钟激活一次以检查进程,并杀死那些花费超过一定时间的进程,但不建议这样做。
您可以使用内置模块UTL_MAIL发送电子邮件并通过admin_cmd终止流程,但您必须并行创建监控流程,而且无法通过相同的连接
您可以在他的博客中查看Serge Rielau的文章,该文章可以为您提供许多想法:https://www.ibm.com/developerworks/community/blogs/SQLTips4DB2LUW/entry/sleep?lang=en
答案 1 :(得分:0)
查询超时是客户端配置参数,通过db2cli.ini
,db2dsdriver.cfg
或JDBC连接属性设置,具体取决于客户端版本和类型。要在运行存储过程的服务器端强制执行查询运行时限制,您需要使用Workload Manager。
在任何一种情况下,我都认为您无法向客户触发电子邮件通知。