这称为延迟名称解析。
无法关闭它。您可以使用动态sql或(讨厌的技巧!)添加对不存在的表的引用,以便推迟对该语句的编译。
CREATE PROCEDURE [dbo].[MyProcedure]
AS
BEGIN
CREATE TABLE #Dummy (c int)
SELECT
NonExistantCol1, NonExistantCol2, NonExistantCol3
FROM
ExistantTable
WHERE NOT EXISTS(SELECT * FROM #Dummy)
DROP TABLE #Dummy
END
GO