SQL Open Open Query里面的TRY和CATCH不起作用

时间:2018-03-28 16:54:34

标签: sql sql-server sql-server-2008

美好的一天。我正在尝试在OPEN QUERYTRY内执行CATCH。我希望TRY从远程服务器获取数据,如果连接失败;我想执行CATCH。但是,错误将持续存在,而不会进入CATCH

我读到TRYCATCH无法解决的某些错误。我做错了吗?尝试通过脚本找出查询连接是否已连接或失败的任何其他方法?如果失败则去执行其他操作(警告数据库没有基本连接)

非常感谢任何帮助。

BEGIN try 
    SELECT * 
    FROM   Openquery([xxx-xxx\xx_xx], 'select * from xxx.dbo.xxx') 
END try 

BEGIN catch 
    SELECT 2 as STATUS 
END catch 

我故意拼错服务器或关闭服务器时收到的错误。 (如果我自己运行OPEN QUERY它工作正常。我已经做了sp_add链接服务器FYI)

Msg 7202, Level 11, State 2, Line 33
Could not find server 'xxx-xxx\xx_xx' in sys.servers. Verify that the correct server name was specified. If necessary, execute the stored procedure sp_addlinkedserver to add the server to sys.servers.

1 个答案:

答案 0 :(得分:1)

if exists (Select name from sys.servers where name=yourname)
    SELECT * 
    FROM   Openquery([xxx-xxx\xx_xx], 'select * from xxx.dbo.xxx') 

else
    SELECT 2 as STATUS