Buscar FKs - Relaciones de Tablas - Sql Server

Hoy les dejo un post que les puede resultar muy útil.

A mi me ha sacado de más de un apuro.

Suele pasar que a veces trabajamos con bases de datos muy grandes, o que estén mal diseñadas o que simplemente no entendemos por completo su esquema. A mi me ha pasado en el trabajo con una base de datos diseñada fuera de Raona.

En trabajos como este necesitamos buscar información determinada, y nos pasamos recorriendo tablas y tablas.

Para evitar esto les dejo un script SQL, para SQL Server, para encontrar tablas con FKs que apuntan a una tabla que nosotros queramos. Este script nos devuelve la tabla donde se encuentra la clave foránea, la columna de la FK y además el nombre de la constraint.

-- RELACION DE TABLA (DEPENDENCIAS)

SELECT
FK_Table = FK.TABLE_NAME,
FK_Column = CU.COLUMN_NAME,
PK_Table = PK.TABLE_NAME,
PK_Column = PT.COLUMN_NAME,
ConstraintName = C.CONSTRAINT_NAME
FROM
INFORMATION_SCHEMA.REFERENTIAL_CONSTRAINTS C
INNER JOIN
INFORMATION_SCHEMA.TABLE_CONSTRAINTS FK
ON C.CONSTRAINT_NAME = FK.CONSTRAINT_NAME
INNER JOIN
INFORMATION_SCHEMA.TABLE_CONSTRAINTS PK
ON C.UNIQUE_CONSTRAINT_NAME = PK.CONSTRAINT_NAME
INNER JOIN
INFORMATION_SCHEMA.KEY_COLUMN_USAGE CU
ON C.CONSTRAINT_NAME = CU.CONSTRAINT_NAME
INNER JOIN
(
SELECT
TC.TABLE_NAME, CU.COLUMN_NAME
FROM
INFORMATION_SCHEMA.TABLE_CONSTRAINTS TC
INNER JOIN
INFORMATION_SCHEMA.KEY_COLUMN_USAGE CU
ON TC.CONSTRAINT_NAME = CU.CONSTRAINT_NAME
WHERE TC.CONSTRAINT_TYPE = 'PRIMARY KEY'
) PT
ON PT.TABLE_NAME = PK.TABLE_NAME
WHERE
PK.TABLE_NAME = 'SALESORDERHEADER' -- TU TABLA



Espero sinceramente que le sirva a alguien!

8 comentarios:

Anónimo dijo...

justo lo que estaba buscando

muchas gracias

dario

Jose dijo...

Marcos muy buen blog sos un capo segui asi. gracias por la info. un abrazo
Cochelo.

Marcos dijo...

No con BJ justamente Javi, jaja

Pero si tiene que ver con renegar con BDs ajenas.

Jeje, saludo che!

Anónimo dijo...

Muy buena info

muchas gracias

lo probaré y te pregunto si me surgen dudas

Anónimo dijo...

Un "me ha servido" gracias!!

luish dijo...

a mi me sale vacio

luish dijo...

a mi me sale vacio

Anónimo dijo...

MUCHAS GRACIAS, :)

Publicar un comentario