0

我遇到了与下面的问题类似的问题,我想我找到了一个解决方案,但我只需要知道连接超时的 sql 系统变量我尝试过@@LOCK_TIMEOUT 但这只有在您设置超时时才有效。但是,当 sql server 连接超时或存储此信息的变量时不应该有默认超时,以防 dba 增加或减少连接超时,而不仅仅是会话。因为如果超时没有在会话级别设置,而是在服务器级别设置,那么@@LOCK_TIMEOUT 仍然是-1。

类似的问题: 在存储过程中处理超时 我打算做的事情如下:

@start = SYSDATETIME() exec stored_proc 跨服务器调用 sp @end = SYSDATETIME() IF @end-@start = @LOCK_TIMEOUT1 (@Lock_timeout1 将是从该 SP 调用的 sp 的超时) BEGIN Raiserror('Timeout sp 在跨服务器调用中发生', 16, 1) END

4

1 回答 1

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 
于 2013-10-23T14:59:40.487 回答