Сгенерировать sql код для удаления default-ограничения не зная его имени, но зная таблицу и колонку, можно следующей командой (вынесена в отдельную функцию):
create -- alter function dbo.create_delete_default_command(@table_name varchar(256), @col_name varchar(256)) returns varchar(1000) as begin declare @delete_command varchar(1000) select @delete_command = 'ALTER TABLE ' + @table_name + ' drop constraint ' + defcon.name from sys.tables join sys.default_constraints defcon on defcon.parent_object_id = sys.tables.object_id join sys.columns as scol on scol.object_id = sys.tables.object_id and scol.column_id = defcon.parent_column_id where sys.tables.name = @table_name and scol.name = @col_name return @delete_command end
Использование функции
select dbo.create_delete_default_command('TEST_TABLE', 'TEST_COLUMN')
В принципе можно удалять ограничение сразу
execute (@delete_command)
How to drop SQL default constraint without knowing its name?