Я поддерживаю продукт, который установлен в нескольких местоположениях который, как случайно обновлено. Ограничения на уникальность данных были добавлены ко многим таблицам, но я понятия не имею, что имена в каком-то конкретном экземпляре. То, что я действительно знаю, является table/columnname парой, которая имеет ограничения на уникальность данных, и я хотел бы записать сценарий для удаления любого ограничения на уникальность данных на эти комбинации столбца/таблицы.
Это - SQL Server 2000 и позже. Что-то, что работает над 2000/2005/2008, было бы лучшим!
Этот скрипт создаст список ALTER TABLE..... DROP CONSTRAINT....
команд, которые вы можете затем скопировать+вставить и выполнить (или подправить перед выполнением по мере необходимости) для удаления всех уникальных ограничений / уникальных индексов:
SELECT
'ALTER TABLE ' + OBJECT_NAME(so.parent_obj) + ' DROP CONSTRAINT ' + so.name
FROM sysobjects so
WHERE so.xtype = 'UQ'
Я надеюсь, что это должно работать на всех версиях SQL Server от 2000 до 2008 R2.
На этой странице есть быстрый и грязный способ вытащить все CONSTRAINT
ы в базе данных, и оттуда вы могли бы построить динамический SQL для их удаления:
SELECT OBJECT_NAME(OBJECT_ID) AS NameofConstraint,
SCHEMA_NAME(schema_id) AS SchemaName,
OBJECT_NAME(parent_object_id) AS TableName,
type_desc AS ConstraintType
FROM sys.objects
WHERE type_desc LIKE '%CONSTRAINT';