Я должен удалить ограничения на уникальность данных, которых я не знаю названия

Я поддерживаю продукт, который установлен в нескольких местоположениях который, как случайно обновлено. Ограничения на уникальность данных были добавлены ко многим таблицам, но я понятия не имею, что имена в каком-то конкретном экземпляре. То, что я действительно знаю, является table/columnname парой, которая имеет ограничения на уникальность данных, и я хотел бы записать сценарий для удаления любого ограничения на уникальность данных на эти комбинации столбца/таблицы.

Это - SQL Server 2000 и позже. Что-то, что работает над 2000/2005/2008, было бы лучшим!

9
задан marc_s 8 June 2010 в 09:45
поделиться

2 ответа

Этот скрипт создаст список 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.

5
ответ дан 3 November 2019 в 04:41
поделиться

На этой странице есть быстрый и грязный способ вытащить все 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';
0
ответ дан 3 November 2019 в 04:41
поделиться
Другие вопросы по тегам:

Похожие вопросы: