在我们的应用程序的一部分中,我们必须保存一些数据。保存数据需要一些时间,可能会在几秒到几分钟之间变化。为了解决这个问题,所以没有sql超时,我们有以下流程。
注意:这都是我们的DBA设置的,这个过程已经使用了好几年没有任何问题。
1:调用将作业放入表中的storedProcedure。这个存储过程返回一个jobid。此sp的输入参数是一个exec语句,用于执行带参数的另一个storedprocdure。
2:然后我调用另一个传递jobid的存储过程,它将返回作业的状态,例如已完成(true)否则为false +错误消息。
3:我在2秒的睡眠中循环执行步骤2最多5次。如果返回的状态已完成或存在某些错误,我会退出循环。并且在5次仍处于不完整状态之后,我只是显示消息,它花了太长时间,请稍后访问该页面(这不是一个好主意,但到目前为止,该过程已完成大约2-3次循环而未达到最多5次,但有机会)。
现在我想知道是否有更好的方法来完成上述工作,甚至今天,经过几年,这是我最好的选择吗?
注意:使用ASP.NET 2.0 Webforms / ADO.NET
答案 0 :(得分:0)
我会考虑对操作进行排队,或者如果这不是一个选项(听起来可能不是),那么我将异步执行存储过程,并使用回调让你知道它何时完成。
这个问题可能有所帮助:
Ping to stored procedure to know execution completed in .net?