Сиротские ограничения в базе данных SQL Server - PullRequest
3 голосов
/ 19 мая 2011

Выполнение следующего запроса приводит ко всем ограничениям в базе данных нашего клиента. Однако несколько строк в наборе результатов, похоже, не имеют родителя, то есть parent_object_id = 0 и OBJECT_NAME(parent_object_id) возвращает NULL.

SELECT name, type_desc, OBJECT_NAME(parent_object_id), parent_object_id
FROM sys.objects
WHERE is_ms_shipped = 0
AND type_desc LIKE '%_CONSTRAINT'

Означает ли это, что в базе данных есть бесхозные ограничения? Если так, как я могу удалить их?

По их именам я вижу, что они являются остатками до того, как в структуру было внесено большое количество изменений.

1 Ответ

5 голосов
/ 19 мая 2011

Используя sp_helptext Я вижу, что они были созданы с помощью оператора CREATE DEFAULT, например ::

CREATE DEFAULT dbo.MyDefault AS 2

Это означает, что это просто несвязанные значения по умолчанию, которые можно связать с помощью sp_binddefault в соответствии с MSDN и удалить с помощью простого оператора DROP DEFAULT:

DROP DEFAULT dbo.MyDefault

Я не знал об этом синтаксисе, который, вероятно, будет удален в будущей версии SQL Server, согласно вышеупомянутой статье MSDN.

...