Many times during SQL server development we need to search for a stored procedure containing a specific text. This helps in checking for dependencies for objects in stored procedures or sometimes we might be simply interested in searching for a hard coded text. We can use the below approaches for finding the same:
1) Using INFORMATION_SCHEMA.ROUTINES
SELECT ROUTINE_NAME, ROUTINE_DEFINITION
FROM INFORMATION_SCHEMA.ROUTINES
WHERE ROUTINE_DEFINITION LIKE '%SearchText%' AND ROUTINE_TYPE='PROCEDURE'
2) Using SYSCOMMENTS
SELECT OBJECT_NAME(id)
FROM SYSCOMMENTS
WHERE [text] LIKE '%SearchText%' AND OBJECTPROPERTY(id, 'IsProcedure') = 1
GROUP BY OBJECT_NAME(id)
3) Using SYS.SQL_MODULES
SELECT OBJECT_NAME(object_id)
FROM SYS.SQL_MODULES
WHERE OBJECTPROPERTY(object_id, 'IsProcedure') = 1 AND definition LIKE '%SearchText%'
In the below query the three approaches are combined into one single query :
SELECT DISTINCT [StoredProcedureName]
FROM (
(SELECT ROUTINE_NAME [StoredProcedureName]
FROM INFORMATION_SCHEMA.ROUTINES
WHERE ROUTINE_DEFINITION LIKE '%' + @Search + '%'
AND ROUTINE_TYPE='PROCEDURE')
UNION ALL
(SELECT OBJECT_NAME(id) [StoredProcedureName]
FROM SYSCOMMENTS
WHERE [text] LIKE '%' + @Search + '%'
AND OBJECTPROPERTY(id, 'IsProcedure') = 1
GROUP BY OBJECT_NAME(id))
UNION ALL
(SELECT OBJECT_NAME(object_id) [StoredProcedureName]
FROM sys.sql_modules
WHERE OBJECTPROPERTY(object_id, 'IsProcedure') = 1
AND definition LIKE '%' + @Search + '%')
) AS T
ORDER BY T.[StoredProcedureName]
Hope the above article helps you in solving a very common but equally important problem we encounter during SQL server development.
0 Comment(s)