链接服务器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
相关产品推荐
相关产品推荐

