我们有时会编写重命名表或列并具有其他复杂逻辑的数据端口脚本。我们在引用那些旧列或表的 IF 语句中也有 SQL。我们有一个标准来使用 IF 语句来使我们的 SQL 脚本多运行友好。
但是偶尔,即使 if 语句的计算结果为 false,包裹在块中的代码也会出错,我猜是因为语法检查。
if 1 = 0
begin
select * from mydatabase.dbo.mytable; -- doesn't execute, but still errors because doesn't exist
end
另一个奇怪的事情是它并不总是一致的,有时它工作正常。
有谁知道我是否可以通过脚本禁用这些类型的检查。
谢谢
笔记
我知道人们会说他们尝试了类似的情况并且没有错误。起初对我来说,它在 SSMS 中没有出错,但在 SQLCMD 中出错。
sqlcmd MyTestScript.sql -r 1 -U user -P password
然后我将 SSMS 置于 SQLCMD 模式 Query -> CMDMODE 中,它仍然没有给出错误。然后在重新运行几次后,两者都开始出错。