Quiero buscar un texto de todos los procedimientos almacenados de mi base de datos. Yo uso el siguiente SQL:
SELECT DISTINCT
o.name AS Object_Name,
o.type_desc
FROM sys.sql_modules m
INNER JOIN
sys.objects o
ON m.object_id = o.object_id
WHERE m.definition Like '%[ABD]%';
Quiero buscar [ABD]
en todos los procedimientos almacenados, incluidos los corchetes, pero no está dando el resultado adecuado. ¿Cómo puedo cambiar mi consulta para lograr esto?
sql
sql-server
stored-procedures
DharaPPatel
fuente
fuente
SCHEMA_NAME(o.schema_id) AS Schema_Name
a la cláusula select.Prueba esta solicitud:
Consulta
fuente
¿Has intentado usar algunas de las herramientas de terceros para hacer la búsqueda? Hay varios disponibles que son gratuitos y que me ahorraron un montón de tiempo en el pasado.
A continuación hay dos complementos de SSMS que utilicé con buen éxito.
Búsqueda de ApexSQL: busca tanto esquemas como datos en bases de datos y tiene características adicionales como el seguimiento de dependencias y más ...
Paquete de herramientas de SSMS : tiene la misma funcionalidad de búsqueda que la anterior y otras características interesantes. No es gratuito para SQL Server 2012, pero sigue siendo muy asequible.
Sé que esta respuesta no está 100% relacionada con las preguntas (que era más específica), pero espero que otros la encuentren útil.
fuente
Normalmente ejecuto lo siguiente para lograr eso:
fuente
Buena práctica para trabajar con SQL Server.
Cree el procedimiento almacenado a continuación y configure la tecla breve,
Ahora: configure la tecla corta como se muestra a continuación,
La próxima vez que cada vez que desee encontrar un texto en particular en cualquiera de los cuatro objetos, como
Store procedure
,Views
,Functions
yTables
. Solo necesita escribir esa palabra clave y presionar la tecla de acceso directo.Por ejemplo: deseo buscar 'PaymentTable' y luego escribir 'PaymentTable' y asegurarme de seleccionar o resaltar la palabra clave escrita en el editor de consultas y presionar la tecla de acceso directo
ctrl+4
: le proporcionará el resultado completo.fuente
Procedure or function 'Searchinall' expects parameter '@strFind', which was not supplied
Alguna idea?La búsqueda SQL de Redgate es una gran herramienta para hacer esto, es un complemento gratuito para SSMS.
fuente
Tome esto como una alternativa "sucia", pero esto me salvó muchas veces, especialmente cuando no estaba familiarizado con el proyecto DB. A veces intenta buscar una cadena dentro de todos los SP y olvida que parte de la lógica relacionada puede haberse ocultado entre Funciones y Disparadores o simplemente puede estar redactada de manera diferente de lo que pensaba.
Desde su MSSMS puede hacer clic derecho en su base de datos y seleccionar el
Tasks -> Generate Scripts
asistente para generar todos los SP, Fns y disparadores en un solo archivo .sql.¡Asegúrate de seleccionar Triggers también!
Luego use Sublime o Notepad para buscar la cadena que necesita encontrar. Sé que esto puede ser un enfoque bastante ineficiente y paranoico, pero funciona :)
fuente
También puedes usar este:
fuente
INFORMATION_SCHEMA.ROUTINES.ROUTINE_DEFINITION
solo contiene los primeros 4000 caracteres de la rutina.¡Te puede ayudar!
fuente
fuente
fuente
También puedes usar:
Eso incluye comentarios
fuente
OBJECT_NAME ([id]) -> Nombre del objeto (Ver, Procedimiento de almacenamiento, Función escalar, Nombre de función de tabla)
id (int) = número de identificación del objeto
xtype char (2) Tipo de objeto. Puede ser uno de los siguientes tipos de objeto:
FN = función escalar
P = procedimiento almacenado
V = Ver
TF = función de tabla
fuente
Creé un procedimiento para buscar texto en procedimientos / funciones, tablas, vistas o trabajos. El primer parámetro @search es el criterio de búsqueda, @target el objetivo de búsqueda, es decir, procedimientos, tablas, etc. Si no se especifica, busque todos. @db es para especificar la base de datos a buscar, predeterminada para su base de datos actual. Aquí está mi consulta en SQL dinámico.
fuente
Usando CHARINDEX :
Usando PATINDEX :
Usar este doble
[[]ABD]
es similar a escapar:fuente
prueba también esto:
fuente
fuente
Esta consulta es texto de búsqueda en procedimiento almacenado de todas las bases de datos.
fuente
fuente
De vez en cuando utilizo este script para descubrir qué procesos modificar, o para averiguar qué usa una columna de una tabla, o esa tabla para eliminar algo de basura vieja. Comprueba cada base de datos en la instancia en la que se ejecuta sp_msforeachdb maravillosamente suministrado.
fuente
fuente
También puedes usar
y luego correr
fuente