在未执行的条件中出现 SQL 语法错误

Getting SQL syntax error inside condition which is not executing

我是 运行 一个很长的 SQL 脚本,我在其中面临一个关于 "column not available" 的问题,条件是 false。 流量没有进入内部状态,但仍然有问题 也尝试过 SET NOEXEC ON 但仍然遇到问题。

错误是在分析时抛出的,甚至在执行之前。如果出现 parse/validation 错误,则不会执行任何操作,因为 SQL 引擎认为代码编写有误。

IF OBJECT_ID('tempdb..#Example') IS NOT NULL
    DROP TABLE #Example

CREATE TABLE #Example (
    FirstColumn INT)
GO

IF 1 = 0 -- Always false
BEGIN

    SELECT
        C.NonExistantColumn
    FROM
        #Example AS C

END

--Msg 207, Level 16, State 1, Line 5
--Invalid column name 'NonExistantColumn'.

将批次发送到服务器时,您需要确保所有引用列都存在。另一种方法是使用 Dynamic SQL 执行您的语句(在您执行之前服务器不会解析)。