【发布时间】:2021-05-02 09:33:19
【问题描述】:
我有这个程序。该过程在调用另一个过程。 如果需要超过几秒钟,我需要停止内部程序,但我不能使用停止按钮,因为它在另一个程序中
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 秒停止程序?
【问题讨论】:
-
您为什么使用不受支持的 SQL Server 版本?
-
你不能这样做; T-SQL 是一种严格的顺序语言,一旦运行某些东西,您就无法从同一个会话中停止它。要解决此问题,您需要执行脚本创建作业等操作。出于锁定目的,请查看
SET LOCK_TIMEOUT(以及处理错误情况的TRY ... CATCH)。 -
您想要的是一个内置于简单程序中的处理监视引擎。使用 SQL Server 中的普通命令,这种功能是不可能的。有可用的系统进程表可以使用监视引擎查询,但答案在技术上非常详细且冗长,可能涉及 CLR 或外部应用程序。
标签: sql sql-server-2008