Búsqueda de texto en procedimientos almacenados y funciones SQL Server
SQL Server busca texto en procedimientos almacenados y funciones y obtiene los números de línea de cada fila
Acerca de
Un poco de código bastante simple, que puede ser utilizado para recoger referencias y números de línea para ciertas palabras clave dentro de los procedimientos almacenados y funciones en su base de datos.
Utiliza una función creada en otro artículo (enlace más abajo), que divide cadenas en una tabla dependiendo del carácter de entrada que elijas. Como pasamos el carácter de retorno a la función, podemos desglosar la línea a la que se hace referencia.
SQL
DECLARE @SearchStr NVARCHAR(100)='Holidays'SELECT OBJECT_NAME(object_id) ObjectName,object_id ObjectID,WordInt as Line,REPLACE(REPLACE(REPLACE(REPLACE(WordStr,CHAR(13)+CHAR(10),''),CHAR(10),''),CHAR(13),''),CHAR(9),'') as LineTextFROM [utilities].sys.all_sql_modulesOUTER APPLY [utilities].dbo.TextToRows(CHAR(13),definition) ttrWHERE definition like '%'+@SearchStr+'%' ANDWordStr like '%'+@SearchStr+'%'
Acerca de
Esto nos devolverá los siguientes resultados de nuestra base de datos. Son tres funciones que hacen varios cálculos con fechas excluyendo días festivos y se pueden encontrar en la sección Funciones SQL.
Resultados
ObjectName | ObjectID | Line | LineText |
CalcWorkDaysBetween | 1010102639 | 9 | IF (DATEPART(WEEKDAY,@Date)IN(1,7) OR (SELECT Count(*) FROM Holidays WHERE Date=@Date)=1) |
CalcWorkDaysMonth | 1026102696 | 9 | IF (DATEPART(WEEKDAY,@Date) IN(1,7)OR(SELECT Count(*) FROM Holidays WHERE Date=@Date)=1) |
CalcWorkDaysAddDays | 1042102753 | 10 | IF NOT (DATEPART(WEEKDAY,@Date) IN (1,7) OR EXISTS (SELECT * FROM Holidays WHERE Date=@Date)) |