[SQL] Obtener las FK y sus relaciones de una Base de datos SQL 2005.


El día de hoy un amigo me pregunto como ver las relaciones foráneas (FK) de una tabla(s) en SQL 2005 desde código y no en vista de diseño. Poniéndome a buscar encontré  algunos ejemplos, de los cuales considero el más eficaz. El siguiente ejemplo muestra como obtener las llaves foráneas en conjunto con sus relaciones a otras tablas en SQL Server 2005. Todo consiste en acceder al catalogo de sistema que contiene las llaves foráneas y el catalogo de columnas de las mismas llaves.

 

USE tuBaseDeDatos;
GO
SELECT fk.name AS FK,
       OBJECT_NAME(fk.parent_object_id) AS TableName,
       COL_NAME(fc.parent_object_id,fc.parent_column_id) AS ColumnName,
       OBJECT_NAME (fk.referenced_object_id) AS ReferenceTableName,
       COL_NAME(fc.referenced_object_id, fc.referenced_column_id) AS ReferenceColumnName
FROM sys.foreign_keys AS fk
INNER JOIN sys.foreign_key_columns AS fc ON fk.OBJECT_ID = fc.constraint_object_id

@http://blog.sqlauthority.com/2007/09/04/sql-server-2005-find-tables-with-foreign-key-constraint-in-database/

En base al código anterior y para efectos de claridad prepare la siguiente consulta que obtiene el nombre de una relación foránea (FK) y el nombre de la columna la cual funciona como FK, todo esto a partir de una determinada tabla.

USE tuBaseDeDatos;
GO

DECLARE @tabName AS Varchar(50)
SET @tabName = 'dbo.TU_TABLA'--Nombre de la Tabla de la cual se obtendrán las FK's.

SELECT OBJECT_NAME(f.constid) AS 'FKName', c.name AS 'ColName'
FROM sysforeignkeys f
INNER JOIN syscolumns c ON f.fkeyid = c.id AND f.fkey = c.colid
WHERE fkeyid = OBJECT_ID(@tabName)

Espero les sea de ayuda. Dejen comentarios!!!

    • Armando
    • 24/02/09

    La explicación de procediemientos almacenados me fue de gran ayuda. muy planteados los temas. Gracias.

    • MiltonFre
    • 29/05/09

    Excelente…

    • Lesth – Luis
    • 5/06/09

    Exelente.. esperamos mas articulos como estos!!!…
    Suerte… y gracias lo voy a implementar

    • psykrest
    • 5/06/09

    Que bueno te gusto el post, apoyame votando por mi blog en: http://blogit.ms/topbloggers.aspx ahi seleccionas mi blog: https://sqlpsykrest.wordpress.com
    Espero sin duda contar contigo, saludos

    • Humberto
    • 5/05/10

    De mucha ayuda!!!

    • Marco Massa
    • 30/07/10

    Muy bueno gracias me es de gran utilidad.

    • ancona
    • 21/01/11

    creo que es necroposting lo que escribire pero estando en el MS SQL Server Management Studio Express, clic con boton derecho a la tabla y elegir Modificar, dentro del cuadro que se abra, dar clic con boton derecho y elegir Relaciones, ahi estan las FK

    • psykrest
    • 22/01/11

    Hola, pues depende de que camino quieras utilizar para obtener la información que necesitas, Si tienes una base de datos con 50 tablas y el Project Manager te solicita un informe de todas las llaves FK de tu BD, ¿Que vas hacer? dar click derecho a todas esas tablas, yo creo que seria mucho tiempo invertido, estaria mejor ejecitar el Query y despues organizar un Reporte, to solución es valida pero para soluciones mas sencillas, gracias por visitar mi blog y por opinar, de esa manera todo aprendemos, saludos Ivan

    • Alejandro
    • 23/08/12

    justo lo que andaba buscando, gracias

    • Masi
    • 7/12/12

    Que buena esa!!

    • Ana Cristina
    • 19/05/14

    Muchas gracias, me haz ayudado demasiado🙂

  1. No trackbacks yet.

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s

A %d blogueros les gusta esto: