Mostrando entradas con la etiqueta SQL Server 2008. Mostrar todas las entradas
Mostrando entradas con la etiqueta SQL Server 2008. Mostrar todas las entradas

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

11 de enero de 2011

Obtener las columnas de una tabla en SQL Server 2008

Aquí les dejo un script con el cual podemos obtener la estructura de una tabla dada, especifícada en la variable @tabla, identificando las columnas que son PK dentro de la misma. Creo que tambien sirve perfectamente para SQL Server 2005.
declare @tabla as varchar(1000) 
set @tabla = 'gen_intranet_dfncn_prmtr'

select OBJECT_NAME(OBJECT_ID(@tabla)) tabla,
 col.name as nombre, 
 ( select name from sys.types tip where col.system_type_id = tip.system_type_id ) as tipo, 
 col.max_length as longitud,
 col.precision as precisión,
 col.scale as escala,
 case when col.is_nullable = 0 then 'NOT NULL' else 'NULL' end as nullable,
 case when col.is_identity = 0 then '' else 'SI' end as [es identity],
 case when icol.column_id is not null then 'PK' else '' end as [es pk]
from sys.columns col 
 left join ( select icol.* 
    from sys.index_columns icol 
     inner join sys.indexes idx on icol.index_id = idx.index_id 
    where idx.is_primary_key = 1
      and idx.object_id = object_id(@tabla)) as icol on col.column_id = icol.column_id and col.object_id = icol.object_id
where col.object_id = object_id(@tabla)
order by col.column_id
El resultado que nos queda sería algo como esto: