2010-08-26 34 views
52

¿Hay alguna forma que pueda encontrar en el procedimiento almacenado de SQL Server Management Studio por nombre o por parte del nombre? (En el contexto de base de datos activa)Buscar procedimiento almacenado por nombre

Gracias por la ayuda

Respuesta

92

Se puede utilizar:

select * 
from 
    sys.procedures 
where 
    name like '%name_of_proc%' 

si necesita el código se puede ver en la tabla syscomments

select text 
from 
    syscomments c 
    inner join sys.procedures p on p.object_id = c.object_id 
where 
    p.name like '%name_of_proc%' 

Editar Actualización:

También puede utilizar la versión estándar de ansi

SELECT * 
FROM 
    INFORMATION_SCHEMA.ROUTINES 
WHERE 
    ROUTINE_NAME LIKE '%name_of_proc%' 
+0

Si desea obtener el texto de la sp con el nombre, es más fácil con el uso "sp_helptext SPNAME" – Ali

35

Suponiendo que estés en el Explorador de objetos Detalles (F7 ) que muestra la lista de procedimientos almacenados, haga clic en el botón Filtros y escriba el nombre (o parte del nombre).

alt text

+1

Muchas gracias, no sabía nada sobre el filtro, de alguna manera nunca vi ese botón. –

3

Esto funciona para tablas y vistas (entre otras cosas), así, no sólo sprocs:

SELECT 
    '[' + s.name + '].[' + o.Name + ']', 
    o.type_desc 
FROM 
    sys.objects o 
    JOIN sys.schemas s ON s.schema_id = o.schema_id 
WHERE 
    o.name = 'CreateAllTheThings' -- if you are certain of the exact name 
    OR o.name LIKE '%CreateAllThe%' -- if you are not so certain 

También le da el nombre de esquema que será útil en cualquier no- base de datos trivial (por ejemplo, una donde necesita una consulta para encontrar un procedimiento almacenado por nombre).

+1

Migrando una aplicación heredada de sql 2005 a 2016, mi script obtuvo 'sintaxis incorrecta cerca de'errorMessage', lo cual no fue de mucha ayuda. Cuando ejecuté el mismo sql en SSSM, agregó "en el procedimiento 'some_name'", ¡pero no existía tal procedimiento almacenado en ninguna parte! Resultó que era un disparador, y su consulta lo encontró. ¡Gracias! – mickeyf

0

truco muy limpio Me tropiezo con intentar una inyección SQL, en el explorador de objetos en el cuadro de búsqueda simplemente use sus caracteres de porcentaje, y esto buscará TODO los procedimientos almacenados, funciones, vistas, tablas, esquemas, índices ... Me cansé de pensar en más :)

Search Pattern

1

puede utilizar esta consulta:

SELECT 
    ROUTINE_CATALOG AS DatabaseName , 
    ROUTINE_SCHEMA AS SchemaName, 
    SPECIFIC_NAME AS SPName , 
    ROUTINE_DEFINITION AS SPBody , 
    CREATED AS CreatedDate, 
    LAST_ALTERED AS LastModificationDate 
FROM INFORMATION_SCHEMA.ROUTINES 
WHERE 
    (ROUTINE_DEFINITION LIKE '%%') 
    AND 
    (ROUTINE_TYPE='PROCEDURE') 
    AND 
    (SPECIFIC_NAME LIKE '%AssessmentToolDegreeDel') 

Como se puede ver, se puede hacer una búsqueda en el interior del cuerpo del procedimiento almacenado también.

+0

@ardi, Nuevamente estás aquí! : <> – Ali

Cuestiones relacionadas