ver texto tabla stored resueltos procedimientos procedimiento ejercicios ejemplos codigo buscar almacenados almacenado sql tsql sql-server-2005

sql - texto - Cómo identificar todos los procedimientos almacenados que refieren una tabla particular



procedimientos almacenados sql server pdf (8)

La siguiente consulta obtendrá todos los nombres de procedimientos almacenados y la definición correspondiente de esos SP

select so.name, text from sysobjects so, syscomments sc where so.id = sc.id and UPPER(text) like ''%<TABLE NAME>%''

Creé una tabla sobre el entorno de desarrollo para fines de prueba y hay pocas sp que están revisando esta tabla. Ahora tengo que soltar esta tabla e identificar todas las sp que se refieren a esta tabla. Estoy enfrentando dificultades para encontrar la lista de todas las sp. Sugiera una consulta suponiendo que el nombre de la tabla es ''x'' y la base de datos es SQL Server 2005.


Lo siguiente funciona en SQL2008 y superior. Proporciona una lista de procedimientos y funciones almacenados.

select distinct [Table Name] = o.Name, [Found In] = sp.Name, sp.type_desc from sys.objects o inner join sys.sql_expression_dependencies sd on o.object_id = sd.referenced_id inner join sys.objects sp on sd.referencing_id = sp.object_id and sp.type in (''P'', ''FN'') where o.name = ''YourTableName'' order by sp.Name


Una forma de no consulta sería usar Sql Server Management Studio.

Ubique la tabla, haga clic derecho y elija "Ver dependencias".

EDITAR

Pero, como dijeron los comentaristas, no es muy confiable.


a veces las consultas anteriores no darán el resultado correcto, existe un procedimiento almacenado incorporado disponible para obtener las dependencias de la tabla como:

EXEC sp_depends @objname = N''TableName'';


debajo de la consulta solo funciona para la tabla no para la columna

EXEC sp_depends @objname = N''TableName'';

debajo de la consulta es mejor que no se pierda nada da más pero no está mal

select distinct so.name --, text from sysobjects so, syscomments sc where so.id = sc.id and lower(text) like ''%organizationtypeid%'' order by so.name


SELECT o.name FROM sys.sql_modules sm INNER JOIN sys.objects o ON o.object_id = sm.object_id WHERE sm.definition LIKE ''%<table name>%''

Solo tenga en cuenta que esto también hará aparecer los SP donde el nombre de la tabla está en los comentarios o donde el nombre de la tabla es una subcadena de otro nombre de tabla que se está usando. Por ejemplo, si tiene tablas llamadas "prueba" y "prueba_2" e intenta buscar SP con "prueba", obtendrá resultados para ambas.


SELECT DISTINCT OBJECT_NAME(OBJECT_ID), object_definition(OBJECT_ID) FROM sys.Procedures WHERE object_definition(OBJECT_ID) LIKE ''%'' + ''table_name'' + ''%'' GO

Esto funcionará si tiene que mencionar el nombre de la tabla.