• As I have mentioned above my solution is to wrap the script around SET PARSEONLY OFF/ON. And here is the implementation:

    SET PARSEONLY OFF -- turn off the syntax and name reference check

    IF (EXISTS (

    SELECT *

    FROM sys.columns c

    WHERE c.object_id = OBJECT_ID(N'[dbo].CS')

    AND c.[Name] = 'NotEligible'

    )

    AND EXISTS (

    SELECT *

    FROM sys.columns c

    WHERE c.object_id = OBJECT_ID(N'[dbo].CS')

    AND c.[Name] = 'DerivedNotEligible'

    ))

    BEGIN

    UPDATE dbo.CS

    SET dbo.CS.DerivedNotEligible = dbo.CS.NotEligible

    ALTER TABLE [dbo].[CS]

    DROP CONSTRAINT [DF_CS_NotEligible]

    ALTER TABLE [dbo].CS

    DROP COLUMN [NotEligible]

    END

    GO

    SET PARSEONLY ON -- turn on the syntax and name reference check