Я бы хотел сослаться на предыдущий вопрос, потому что я столкнулся с той же проблемой и решил это решение .Прежде всего, ограничение всегда строится со значением Hash
в его имени.Так что проблема в том, что HASH
меняется на разных машинах или в базах данных.Например, DF__Companies__IsGlo__6AB17FE4
здесь 6AB17FE4
- это значение хеша (8 бит).Так что я имею в виду один скрипт, который будет плодотворным для всех
DECLARE @Command NVARCHAR(MAX)
declare @table_name nvarchar(256)
declare @col_name nvarchar(256)
set @table_name = N'ProcedureAlerts'
set @col_name = N'EmailSent'
select @Command ='Alter Table dbo.ProcedureAlerts Drop Constraint [' + ( select d.name
from
sys.tables t
join sys.default_constraints d on d.parent_object_id = t.object_id
join sys.columns c on c.object_id = t.object_id
and c.column_id = d.parent_column_id
where
t.name = @table_name
and c.name = @col_name) + ']'
--print @Command
exec sp_executesql @Command
. Он снимет ограничения по умолчанию.Однако, если вы хотите создать его снова, вы можете просто попробовать это
ALTER TABLE [dbo].[ProcedureAlerts] ADD DEFAULT((0)) FOR [EmailSent]
Наконец, просто выполните команду DROP
, чтобы удалить столбец.