Pergunta

A execução da consulta a seguir resulta em todas as restrições no banco de dados do nosso cliente.No entanto, várias linhas no conjunto de resultados não parecem ter um pai, ou seja, parent_object_id = 0 e OBJECT_NAME(parent_object_id) retorna 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'

Isso significa que existem restrições órfãs no banco de dados?Se sim, como faço para removê-los?

Pelos nomes, posso ver que são sobras de antes de muitas mudanças serem feitas na estrutura.

Foi útil?

Solução

Usando sp_helptext Posso ver que eles foram criados usando um CREATE DEFAULT declaração, por exemplo:

CREATE DEFAULT dbo.MyDefault AS 2

Isso significa que eles são simplesmente padrões não vinculados, que podem ser vinculados usando o sp_binddefault de acordo com MSDN, e removido com um simples DROP DEFAULT declaração:

DROP DEFAULT dbo.MyDefault

Eu não conhecia essa sintaxe, que aparentemente será removida em uma versão futura do SQL Server, de acordo com o artigo do MSDN mencionado acima.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top