我在下面的问题上遇到了类似的问题,我想我找到了一个解决方案,但我只需要知道sql系统变量的连接超时是什么我试过@@ LOCK_TIMEOUT但是只有在设置超时时才有效。但是,如果sql服务器连接只是超时或者存储此信息的变量,以防dba增加或减少连接的超时而不仅仅是会话,则不应该有默认超时。因为如果没有在会话级别设置超时并且它在服务器级别设置而不是@@ LOCK_TIMEOUT仍为-1。
类似的问题: Handling Timeouts inside stored procedures 我计划做的是以下几点:
@start = SYSDATETIME() exec stored_proc跨服务器调用sp @end = SYSDATETIME() IF @ end- @start = @ LOCK_TIMEOUT1(@ Lock_timeout1将是从该SP调用sp的超时时间) 开始 Raiserror('交叉服务器调用中出现超时',16,1) END
答案 0 :(得分:0)
我想我发现这是我到目前为止所做的:
SET @TimeoutCheck =(SELECT CONVERT(INT,VALUE) FROM crossserver.sys.configurations WHERE configuration_id=1520)
SET @start=GETDATE()
Exec crossserver.processthissp @ProcessID
IF @@error<>0
BEGIN
Raiserror('Error in crossserver.processthissp', 16,1)
Return
END
SET @end=GETDATE()
SELECT @TimeoutCheck/60,DATEDIFF(mi, @start, @end)
IF DATEDIFF(mi, @start, @end) > @TimeoutCheck/60
BEGIN
RaisError('Job failed due to cross server timeout.',16,1)
Return -1
END