How can I find out what FOREIGN KEY constraint references a table in SQL Server?

前端 未结 15 826
再見小時候
再見小時候 2020-12-04 05:12

I am trying to drop a table but getting the following message:

Msg 3726, Level 16, State 1, Line 3
Could not drop object \'dbo.UserProfile\' bec

15条回答
  •  星月不相逢
    2020-12-04 05:59

    --The following may give you more of what you're looking for:

    create Procedure spShowRelationShips 
    ( 
        @Table varchar(250) = null,
        @RelatedTable varchar(250) = null
    )
    as
    begin
        if @Table is null and @RelatedTable is null
            select  object_name(k.constraint_object_id) ForeginKeyName, 
                    object_name(k.Parent_Object_id) TableName, 
                    object_name(k.referenced_object_id) RelatedTable, 
                    c.Name RelatedColumnName,  
                    object_name(rc.object_id) + '.' + rc.name RelatedKeyField
            from sys.foreign_key_columns k
            left join sys.columns c on object_name(c.object_id) = object_name(k.Parent_Object_id) and c.column_id = k.parent_column_id
            left join sys.columns rc on object_name(rc.object_id) = object_name(k.referenced_object_id) and rc.column_id = k.referenced_column_id
            order by 2,3
    
        if @Table is not null and @RelatedTable is null
            select  object_name(k.constraint_object_id) ForeginKeyName, 
                    object_name(k.Parent_Object_id) TableName, 
                    object_name(k.referenced_object_id) RelatedTable, 
                    c.Name RelatedColumnName,  
                    object_name(rc.object_id) + '.' + rc.name RelatedKeyField
            from sys.foreign_key_columns k
            left join sys.columns c on object_name(c.object_id) = object_name(k.Parent_Object_id) and c.column_id = k.parent_column_id
            left join sys.columns rc on object_name(rc.object_id) = object_name(k.referenced_object_id) and rc.column_id = k.referenced_column_id
            where object_name(k.Parent_Object_id) =@Table
            order by 2,3
    
        if @Table is null and @RelatedTable is not null
            select  object_name(k.constraint_object_id) ForeginKeyName, 
                    object_name(k.Parent_Object_id) TableName, 
                    object_name(k.referenced_object_id) RelatedTable, 
                    c.Name RelatedColumnName,  
                    object_name(rc.object_id) + '.' + rc.name RelatedKeyField
            from sys.foreign_key_columns k
            left join sys.columns c on object_name(c.object_id) = object_name(k.Parent_Object_id) and c.column_id = k.parent_column_id
            left join sys.columns rc on object_name(rc.object_id) = object_name(k.referenced_object_id) and rc.column_id = k.referenced_column_id
            where object_name(k.referenced_object_id) =@RelatedTable
            order by 2,3
    
    
    
    end
    

提交回复
热议问题