13 de enero de 2011

Obtener las Relaciones FK de una tabla

Desde el siguiente enlace encontré como obtener las FK de todas las tablas de una base de datos, realizándole un mínimo cambio lo ajusté para que obtuviese solo las FK's de alguna tabla en particular
declare @tabla as varchar(1000) 
set @tabla = 'nombre_tabla'

SELECT  so.name as ForeignTableName, 
  sc.name  as ColumnName, 
  s.name + '.' + PKT.name as PrimaryTableName
from sysreferences r
inner join  sysconstraints c on r.constid = c.constid
inner join sys.tables pkt on PKT.object_id = r.rkeyid
inner join sys.columns sc on sc.column_id = r.fkey1 and r.fkeyid = sc.object_id 
inner join sys.schemas s on s.schema_id=pkt.schema_id
inner join sys.tables so on r.fkeyid = so.object_id
where so.is_ms_shipped = 0 
  and ( pkt.object_id = object_id(@tabla) or r.rkeyid = object_id(@tabla))
order by so.name, sc.name
esto generaría un resultado como el siguiente

No hay comentarios:

Publicar un comentario