You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

链接服务器UNION ALL查询在SSMS报错,无法定位问题求助

问题原因与解决方案
  • 错误根源:SQL Server不允许将TRY/CATCH语句块直接作为UNION ALL的操作数,UNION ALL要求两侧必须是独立的查询结果集,而TRY/CATCH是流程控制语句块,不能直接参与集合合并。
  • 修正方案:将每个TRY/CATCH块包裹在子查询中,让每个部分都返回一个合法的结果集,这样就能正常使用UNION ALL合并。

修正后的代码:

SELECT *
FROM (
    BEGIN TRY
        SELECT * FROM cnbahirdar.CERP_CN_Bahirdar.dbo.vw_hrmsPayrollTransactionBI
    END TRY
    BEGIN CATCH
        SELECT NULL
    END CATCH
) AS t1
UNION ALL
SELECT *
FROM (
    BEGIN TRY
        SELECT * FROM cnwoldiya.CERP_CN_Weldiya.dbo.vw_hrmsPayrollTransactionBI
    END TRY
    BEGIN CATCH
        SELECT NULL
    END CATCH
) AS t2

额外注意:如果两个视图vw_hrmsPayrollTransactionBI的列数、数据类型或顺序不匹配,即使修正语法,UNION ALL仍会报错,需确保两个结果集的结构完全一致。

内容的提问来源于stack exchange,提问作者fatche

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.02 18:13:14