Necesito encontrar todas las vistas y procedimientos almacenados que consuman no solo una tabla determinada, sino una columna específica en una tabla.
Lo siguiente "parece" funcionar, pero hay numerosas advertencias para tener cuidado con este método (no confiable por una variedad de razones, que pronto será obsoleto, etc.):
SELECT object_name(so.id) TableName, sc.name ColumnName, OBJECT_NAME(sd.id) DependentObjectName,
(SELECT xtype FROM sysobjects so WHERE so.id = sd.id) Object_Type
FROM sysobjects so INNER JOIN syscolumns sc
ON so.id = sc.id
INNER JOIN sysdepends sd
ON so.id = sd.depid and sc.colid = sd.depnumber
WHERE
object_name(so.id) = 'MyTableName'
AND sc.name = 'MyColumnName'
order by object_name(so.id), Object_Type
Algunos enfoques alternativos a los que a menudo se hace referencia son sys.sql_dependencies y sys.sql_expression_dependencies, pero ninguno de estos tiene granularidad a nivel de columna.
¿Alguien sabe una manera de hacer esto? (O incluso si sabe definitivamente que literalmente no se puede hacer, sería útil saberlo).
sql-server
tbone
fuente
fuente
Respuestas:
Aquí hay un ejemplo de AdventureWorks sobre la visualización de dependencias de columna.
fuente
where
condición. TS quería encontrar dependencias en la columna específica. Creo que la condición debería restringirc.name
yed.referenced_id
/ed.referenced_entity_name
, ¿no debería?sys.sql_dependencies
ahora está en modo de mantenimiento, y el equipo de Microsoft recomienda usar solosys.sql_expression_dependencies
. Dicho esto, no parece quesys.sql_expression_dependencies
capture el mismo nivel de detalle.