私は、列が存在することを確認した後に列をドロップする(一見)単純なSQLスニペットを書いていました。
問題:列が存在しない場合、 IF句内のコードは、列が見つからないと文句を言います。そうですね、それがIF句の中にある理由です!
だから私の質問は、実行されるべきではないコードがなぜエラーを出すのかということです。
スニペットは次のとおりです。
IF exists (select * from syscolumns
WHERE id=object_id('Table_MD') and name='timeout')
BEGIN
ALTER TABLE [dbo].[Table_MD]
DROP COLUMN timeout
END
GO
...そしてここにエラーがあります:
Error executing SQL script [...]. Invalid column name 'timeout'
Microsoft SQL Server 2005ExpressEditionを使用しています。