Me gustaría referirme a una pregunta anterior, porque me he enfrentado el mismo problema y lo he solucionado con este solution. En primer lugar, una restricción siempre se genera con un valor de Hash
en su nombre. Entonces el problema es que HASH
varía en diferentes máquinas o bases de datos. Por ejemplo DF__Companies__IsGlo__6AB17FE4
aquí 6AB17FE4
es el valor hash (8 bit). Así que me refiero a un único script que será fructífero para todos
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
Caerá su restricción predeterminada. Sin embargo, si desea crear de nuevo sólo tiene que probar este
ALTER TABLE [dbo].[ProcedureAlerts] ADD DEFAULT((0)) FOR [EmailSent]
Por último, simplemente ejecutar un comando DROP
dejar caer la columna.
http://stackoverflow.com/questions/1430456/how-to-drop-sql-default-constraint-without-knowing-its-name –
@Mitch Wheat: Encontré mi restricción única en la tabla sys.indexes pero No he encontrado ningún enlace a la tabla que contenga este índice. ¿Alguna ayuda? – SKINDER
@Mitch Wheat: He encontrado un enlace a mi tabla, es object_id, pero no puedo encontrar un enlace a la columna necesaria ... – SKINDER