Search text in stored procedure in SQL Server
How to Search for Text Within Stored Procedures in SQL Server

Discover effective methods to locate specific text strings or object names within your SQL Server stored procedures, essential for maintenance, debugging, and impact analysis.
Searching for specific text within stored procedures in SQL Server is a common task for database developers and administrators. Whether you're trying to find where a particular table column is used, identify all procedures that call another specific procedure, or simply locate a piece of code, knowing the right techniques can save significant time and effort. This article will guide you through various methods, from using built-in system views to more advanced techniques, ensuring you can efficiently pinpoint the information you need.
Understanding SQL Server System Views for Object Definitions
SQL Server stores the definitions of all database objects, including stored procedures, views, functions, and triggers, within its system catalog. The key to searching these definitions programmatically lies in querying these system views. The most commonly used view for this purpose is sys.sql_modules
, which contains the SQL text for module-based objects. Another useful view is sys.procedures
, which provides metadata about stored procedures.
flowchart TD A[Start Search] --> B{Identify Target Text} B --> C[Query sys.sql_modules] C --> D{Filter by OBJECT_DEFINITION or definition column} D --> E[Retrieve Procedure Name] E --> F[End Search]
Basic workflow for searching text in stored procedures.
SELECT
OBJECT_NAME(sm.object_id) AS ProcedureName,
sm.definition
FROM
sys.sql_modules sm
WHERE
sm.definition LIKE '%YourSearchText%';
Basic query to search for text in all stored procedures.
LIKE '%YourSearchText%'
, be mindful of performance on very large databases. For more precise searches, consider using COLLATE
clauses if your database has case-sensitive collations, or NOLOCK
hint for non-blocking reads (use with caution).Advanced Search Techniques and Considerations
While the basic LIKE
query is effective, you might encounter scenarios where you need more refined searches or need to consider different object types. For instance, you might want to search across functions, views, and triggers as well. Additionally, understanding the limitations of sys.sql_modules
for very large definitions or encrypted procedures is crucial.
SELECT
o.name AS ObjectName,
o.type_desc AS ObjectType,
sm.definition
FROM
sys.sql_modules sm
INNER JOIN
sys.objects o ON sm.object_id = o.object_id
WHERE
sm.definition LIKE '%YourSearchText%'
AND o.type IN ('P', 'FN', 'V', 'TR'); -- P=Procedure, FN=Function, V=View, TR=Trigger
Searching for text across multiple object types.
WITH ENCRYPTION
) will not expose their definition text via sys.sql_modules
. You will not be able to search their content using these methods.Using SQL Server Management Studio (SSMS) Built-in Tools
For those who prefer a GUI-based approach, SQL Server Management Studio (SSMS) offers a convenient 'Object Explorer Details' pane and a 'Find' feature that can be used to search within object definitions. While not as powerful for scripting complex searches as direct T-SQL queries, it's excellent for quick, interactive lookups.
1. Open Object Explorer Details
In SSMS, navigate to 'View' -> 'Object Explorer Details' (or press F7). This pane provides a tabular view of database objects.
2. Filter Objects
In the 'Object Explorer Details' pane, select the 'Stored Procedures' node under your database. You can then use the filter icon (a funnel) to filter by name or other properties.
3. Search within Definitions (Manual)
While 'Object Explorer Details' doesn't directly search procedure content, you can right-click on individual procedures, select 'Modify', and then use SSMS's built-in 'Find' (Ctrl+F) within the query editor window to search the definition.