首页 > 解决方案 > 如何在sql server中几秒钟后自动停止查询?

问题描述

我有这个程序。该过程在调用另一个过程。如果需要超过几秒钟,我需要停止内部程序,但我不能使用停止按钮,因为它在另一个程序中

CREATE procedure [dbo].[proc_1]
as
begin

declare @id output
exec proc_2 @id

if no return for 5 seconds
stop proc_2 automatically

exec proc_3 @id


end

知道可以说 proc_2 正在尝试更新锁定的编辑表并因此延迟。我想在为主程序分配所有时间之前停止它并执行 proc_3 但是我应该写什么:如果没有返回 5 秒停止程序?

标签: sqlsql-server-2008

解决方案


如果 proc_2 卡在 try and catch 中,我将 lock_timeout 设置为返回。proc_3 的 exec 在 catch

CREATE procedure [dbo].[proc_1]
as
begin

declare @id output

begin try
begin transaction
set lock_timeout 1000
exec proc_2 @id
commit transaction
end try

begin catch
exec proc_3 id
end catch


end


推荐阅读