无法赶上链接服务器之间的连接错误

问题描述 投票:2回答:1

出于某种原因,我不能只在特定的服务器连接捉相关的错误。

还有就是通过链接服务器2 SQL-Server之间的通信。有时接触不良而其结果是出现以下错误:

TCP提供:指定的网络名称不再可用。

我曾经的try-catch来处理这个问题,并且由于严重程度是不高于20,一切工作正常。

BEGIN TRY
DECLARE @return_value int

EXEC    @return_value = [dbo].[sp_someSP]

SELECT  'Return Value' = @return_value

END TRY
BEGIN CATCH
SELECT ERROR_MESSAGE(),ERROR_NUMBER(),ERROR_SEVERITY(),ERROR_PROCEDURE()
--NEVER GOES HERE!!!
END CATCH

该过程将导致以下错误:

OLE DB提供程序“STREAM”链接服务器“(空)”返回了消息“议定书TDS流错误”。 OLE DB提供程序“STREAM”链接服务器“(空)”返回了消息“通讯链接失败”。消息64,级别16,状态1,行0提供的TCP:指定的网络名称不再可用。 OLE DB提供程序“STREAM”链接服务器“(空)”返回了消息“查询超时过期”。

我测试的链接服务器和工作正常(我甚至重新链接服务器)

Linked Server Configuration:

@optname=N'collation compatible', @optvalue=N'false'

@optname=N'data access', @optvalue=N'true'

@optname=N'dist', @optvalue=N'false'

@optname=N'pub', @optvalue=N'false'

@optname=N'rpc', @optvalue=N'true'

@optname=N'rpc out', @optvalue=N'true'

@optname=N'sub', @optvalue=N'false'

@optname=N'connect timeout', @optvalue=N'100'

@optname=N'collation name', @optvalue=null

@optname=N'lazy schema validation', @optvalue=N'false'

@optname=N'query timeout', @optvalue=N'100'

@optname=N'use remote collation', @optvalue=N'true'

@optname=N'remote proc transaction promotion', @optvalue=N'false'

SQL服务器:2008 R2标准版(64位)

我不明白为什么我不能赶上下面的错误。

编辑:问题在于超越了存储过程的执行。即使我执行是这样的:

EXEC ('Select * from SomeTable') at LinkedServer

有时(的情况下,小于0.1%),我将获得提到的错误。我试图找到某种模式,但到目前为止没有运气。另外,我搜索是否有某种网络配置可能被杀死查询,但结果却是否定的。

sql-server sql-server-2008 linked-server
1个回答
0
投票

尝试使用动态SQL这样的:

BEGIN TRY
    DECLARE @sql VARCHAR(1000) = 'EXEC [YourDatabase].[dbo].[sp_someSP]';   
    EXEC (@sql) AT [YourServer];
END TRY
BEGIN CATCH
    SELECT ERROR_NUMBER(), ERROR_MESSAGE();
END CATCH;

或者一个像那样的水平:

BEGIN TRY
    DECLARE @sql VARCHAR(1000) = 
       'EXEC (''EXEC [YourDatabase].[dbo].[sp_SomeSP] 
       ''''Parameter1'''', ''''Parameter2'''''') AT [YourLinkedServer]';
    PRINT @sql
    EXEC (@sql); 

END TRY
BEGIN CATCH
    SELECT ERROR_NUMBER(), ERROR_MESSAGE();
END CATCH;

this answer,似乎原因是编译时错误。

© www.soinside.com 2019 - 2024. All rights reserved.