Вы проверяете, нет ли столбца в другой таблице? Если нет, то вы, вероятно, проверьте таблицу, тоже посмотрите, если утверждение ниже.
Если вы уже делаете это, выполняется ли он в одной транзакции и не поднимает этот отброшенный столбец?
IF Not EXISTS (SELECT name FROM sys.columns
WHERE name = 'COLUMN_THAT_NO_LONGER_EXISTS' and Object_Name(object_id) = 'Table1')
Создан быстрый скрипт программы для этого; Можете ли вы подтвердить, что это соответствует тому, что вы пытаетесь сделать, потому что в SQL 2007 по крайней мере это не возвращает ошибку. Если я создаю таблицу и запускаю ее с помощью таблицы alter, она работает; если я тогда запускаю if / insert, который работает даже после удаления таблицы.
create table tblTests
(
TestID int identity (1,1),
TestColA int null,
TestColB int null
)
go -- Ran this on its own
insert into tblTests (TestColA, TestColB)
Select 1,2
go 10
-- Insert some initial data
alter table tblTests
add TestColC Int
go -- alter the table to add new column
-- Run this with column and then after it has removed it
IF EXISTS (SELECT name FROM sys.columns a
WHERE name = 'TestColC' AND
OBJECT_NAME(object_id) = 'tblTests')
Begin
insert into tblTests (TestColA, TestColB, testcolc)
select 1,2,3
alter table tblTests
drop column TestColC
End