Как сгенерировать все ограничения скриптов - PullRequest
10 голосов
/ 24 мая 2011

У меня есть требование, в котором я должен изменить параметры сортировки моей БД, для чего мне нужно удалить все ограничения и воссоздать их после запуска сценария изменения параметров сортировки в моей БД. Могу ли я узнать, как я могу сгенерировать скрипт всех ограничений моей БД?

Ответы [ 4 ]

6 голосов
/ 05 января 2013
SELECT top 1 
    'ALTER TABLE '+ SCHEMA_NAME(schema_id) + '.' + OBJECT_NAME(parent_object_id) + 
    ' ADD CONSTRAINT ' + dc.name + ' DEFAULT(' + definition 
    + ') FOR ' + c.name
FROM sys.default_constraints dc
INNER JOIN sys.columns c ON dc.parent_object_id = c.object_id AND dc.parent_column_id = c.column_id

скрипт для генерации всех ограничений

SELECT * FROM INFORMATION_SCHEMA.TABLE_CONSTRAINTS 

получить все ограничения по БД, затем отфильтровать по вашей таблице

3 голосов
/ 24 мая 2011

Это даст вам все ограничения в базе данных, вы можете отфильтровать их по тому, что вам нужно:

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'

Я думаю, вам также может понадобиться посмотреть на любые индексы, статистику и т. Д., Которые могуттакже удерживать вас от падения столбца.

1 голос
/ 24 мая 2011

Вы можете запрограммировать что-то подобное с помощью SMO или, что еще проще, просто использовать мастер сценариев в SSMS.Перейдите в базу данных в обозревателе объектов и щелкните по ней правой кнопкой мыши.Выберите Задачи-> Создать сценарии (НЕ «База данных сценариев как»).В мастере вы можете убедиться, что ограничения записаны в сценарии, и удалить другие элементы.Проверьте сгенерированный скрипт и убедитесь, что он делает то, что вам нужно.Если нет, то снова пройдите мастер и внесите необходимые изменения.

1 голос
/ 24 мая 2011

Это можно легко сделать из SQL Server Management Studio.

Щелкните правой кнопкой мыши базу данных и перейдите к Задачи , Создать сценарии ... .

Это вызовет мастер генерации скриптов, который сгенерирует скрипты DROP и CREATE для любых выбранных вами конструкций схемы.

Выберите базу данных

Убедитесь, что вы выбрали Script Dropв True

Выберите таблицы

Выберите окно нового редактора запросов и нажмите кнопку Готово.

...