2011-03-09 35 views
5

Quiero encontrar todos los objetos db que dependen de una tabla dada, incluidas otras tablas que hacen referencia a la tabla dada a través de claves externas. Traté de usar "sp_depends" y me da los sprocs, vistas y desencadenadores, pero no me dice qué otras tablas tienen claves foráneas para la tabla dada. ¿Alguna ayuda?Servidor SQL: ver todas las dependencias de la clave externa

Respuesta

9
select OBJECT_NAME(parent_object_id), OBJECT_NAME(referenced_object_id) 
    from sys.foreign_keys 
    where referenced_object_id = object_id('SchemaName.TableName') 
+0

Exactamente lo que necesitaba. Gracias. – thenoob

1

En SSMS: haga clic derecho en la tabla y haga clic "View Dependencies"

+0

Debería haber mencionado esto, pero quiero poder hacerlo en SQL: lo más probable es que esté generando un informe de dependencias – thenoob

+0

solo muestra dependencias de procedimientos almacenados, desencadenantes y otras cosas ... no dependencia de clave externa – pufos

1

También intente esto:

USE AUX; <- use your database name 
GO 
SELECT f.name AS ForeignKey, 
SCHEMA_NAME(f.SCHEMA_ID) SchemaName, 
OBJECT_NAME(f.parent_object_id) AS TableName, 
COL_NAME(fc.parent_object_id,fc.parent_column_id) AS ColumnName, 
SCHEMA_NAME(o.SCHEMA_ID) ReferenceSchemaName, 
OBJECT_NAME(f.referenced_object_id) AS ReferenceTableName, 
COL_NAME(fc.referenced_object_id,fc.referenced_column_id) AS ReferenceColumnName 
FROM sys.foreign_keys AS f 
INNER JOIN sys.foreign_key_columns AS fc ON f.OBJECT_ID = fc.constraint_object_id 
INNER JOIN sys.objects AS o ON o.OBJECT_ID = fc.referenced_object_id 
GO 

y antes de la última GO puede agregar where OBJECT_NAME(f.parent_object_id) = 'your_table_name' para ver única dependencia para esa mesa

Se imprimirá TableName | Column name (FK) | Reference TableName | Reference Column Name

+0

Esto es la mejor respuesta, creo. –

Cuestiones relacionadas