如何让SQL Server忽略检查?

Dak*_*ath 1 sql sql-server validation

我有一个SQL脚本填充临时列,然后删除脚本末尾的列.它第一次运行时,它工作正常,因为列存在,然后它被删除.该脚本第二次中断,因为该列不再存在,即使IF语句确保它不会再次运行.如何绕过此字段的SQL检查?

IF EXISTS (SELECT name FROM syscolumns 
             WHERE name = 'COLUMN_THAT_NO_LONGER_EXISTS')
BEGIN
   INSERT INTO TABLE1
   (
     COLUMN_THAT_NO_LONGER_EXISTS,
     COLUMN_B,
     COLUMN_C
   )
   SELECT 1,2,3 FROM TABLE2

   ALTER TABLE TABLE1 DROP COLUMN COLUMN_THAT_NO_LONGER_EXISTS
END
Run Code Online (Sandbox Code Playgroud)

cod*_*ike 5

我有一个类似的问题,并通过将所有查询构建为字符串并使用Exec()调用执行它来绕过它.这样,查询(选择,插入或其他)在执行之前不会被解析.

虽然它不漂亮或优雅.

例如

exec('INSERT INTO TABLE1(COLUMN_THAT_NO_LONGER_EXISTS,COLUMN_B,COLUMN_C) SELECT 1,2,3 FROM TABLE2')