¿Cómo puedo saber qué procedimiento o disparador almacenado está utilizando una tabla en SQL Server 2008 R2?

dba.stackexchange https://dba.stackexchange.com/questions/7956

Pregunta

Este es el caso de que en el DB estoy revisando, hay una tabla de archivo que mantiene el historial de usuarios, y hay un procedimiento de activación o almacenamiento de que después de un tiempo elimina las filas de esta tabla, para evitar el gran tamaño del Lo mismo, no diseñé el DB, solo estoy tomando el mantenimiento de una aplicación que usa este DB, por lo que no sé el nombre de estos procedimientos o desencadenantes almacenados, lo que quiero hacer es localizar este procedimiento almacenado o activar, verifique el código y modifíquelo para dejar este "historial de usuarios" más tiempo en la tabla.

Alguien me dijo que revisara la tabla de "sysobjects", donde realmente puedo ver algo con el mismo nombre de la tabla, pero esta es la única información que he podido recuperar, ¿de algún aviso?

Gracias.

¿Fue útil?

Solución

Busque todo el código usando sys.sql_modules

SELECT OBJECT_NAME(object_id)
FROM sys.sql_modules sm
WHERE definition LIKE '%Mytable%'

O usar Búsqueda de SQL de Red Gate que es completamente gratis

No haga Use Syscomments o Information_Schema.rubbish

Otros consejos

Probar Búsqueda de apexsql

ApexSQL Search es un complemento gratuito de SQL Server Management Studio y Visual Studio que, entre otras características, tiene la función View Dependences. La función Vista de dependencias tiene la capacidad de visualizar todas las relaciones de los objetos de la base de datos SQL, incluidas las entre objetos cifrados y del sistema, objetos específicos de SQL Server 2012 y objetos almacenados en bases de datos cifrados con cifrado de datos transparentes (TDE)

La función View Dependencias también le permite configurar y personalizar el diseño del diagrama de dependencias visuales, incluidas las relaciones que se presentarán, el diseño y el tamaño del diagrama generado y la profundidad de desglose de las dependencias

Descargo de responsabilidad: trabajo para APEXSQL como ingeniero de soporte

Para referencia futura a partir de 2008 también hay un DMV que se puede usar. sys.dm_sql_referencing_entities. Generalmente prefiero usar SQL_MODULES, ya que evita falsos positivos, entre otras cosas. Lo discutí aquí Pero básicamente si tienes un código como este:

SELECT OBJECT_SCHEMA_NAME(object_id), OBJECT_NAME(object_id) 
FROM sys.sql_modules WHERE [definition] LIKE '%ABC%'

Terminará con los resultados para la tabla ABC, la tabla ABCLOG la vista VW_ABC, el procedimiento almacenado SP_UPDATE_ABC, etc., también, también, también, el DMV manejará SPS cifrado y no cifrado, mientras que el método SQL_Modules solo funciona con SPS sin cifrado. .

La versión DMV de la misma consulta es esta:

SELECT * FROM sys.dm_sql_referencing_entities('dbo.ABC', 'OBJECT')

También puedes usar el sys.sql_expression_dependences Vista del catálogo. Usa esta consulta:

SELECT 
referencing_object_name = obj.name, 
referencing_object_type_desc = obj.type_desc, 
referenced_object_name = referenced_entity_name
FROM sys.sql_expression_dependencies sd 
INNER JOIN sys.objects obj 
ON sd.referencing_id = obj.[object_id] 
WHERE referenced_entity_name = 'MyTable'
Licenciado bajo: CC-BY-SA con atribución
No afiliado a dba.stackexchange
scroll top