Вопрос

Выполнение следующего запроса приводит ко всем ограничениям в базе данных нашего клиента.Однако у нескольких строк в результирующем наборе, похоже, нет родительского элемента, т.е. 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'

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

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

Это было полезно?

Решение

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

CREATE DEFAULT dbo.MyDefault AS 2

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

DROP DEFAULT dbo.MyDefault

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top