• Didn't like the solution. There is an error in it (already noted in a previous post). Added to that, I have a method that also searches views. The extra search of the syscomments.text was applied for very long procedures.

    DECLARE @SQL NVARCHAR(MAX) -- Parameter to sp_MSforeachdb

    -- Parameters into @SQL

    DECLARE @SearchText varchar(100) = '<Place the String Here>'

    SET @SearchText = '%' + @SearchText + '%'

    IF OBJECT_ID('TEMPDB..##Report') IS NOT NULL

    BEGIN

    DROP TABLE ##Report;-- Drop the temp table if already exists

    END

    CREATE TABLE ##Report(

    db VARCHAR(100),

    [DB Object] VARCHAR(100),

    [DB Object Type] VARCHAR(100),

    [Definition] NVARCHAR(MAX),

    create_date DATETIME,

    modify_date DATETIME

    )

    SET QUOTED_IDENTIFIER OFF;

    SET @SQL = REPLACE("

    USE [?];

    DECLARE @db VARCHAR(100) = '?';

    INSERT INTO ##Report

    SELECT @db [db],*

    FROM (

    SELECT * FROM (

    SELECT DISTINCT ROUTINE_SCHEMA + '.' + ROUTINE_NAME [DB Object], ROUTINE_TYPE AS [DB Object Type], ROUTINE_DEFINITION, o.create_date, o.modify_date

    FROM INFORMATION_SCHEMA.ROUTINES i

    INNER JOIN (SELECT o.name, c.text [ROUTINE_TEXT], o.create_date, o.modify_date

    FROM sys.syscomments c

    INNER JOIN sys.objects o on c.id = o.object_id) O

    ON i.ROUTINE_NAME = O.name

    WHERE PatIndex('@SearchText',ROUTINE_DEFINITION) + PatIndex('@SearchText',ROUTINE_TEXT) > 0

    UNION ALL

    SELECT TABLE_SCHEMA + '.' + TABLE_NAME [DB Object], 'VIEW' AS [DB Object Type], VIEW_DEFINITION, o.create_date, o.modify_date

    FROM INFORMATION_SCHEMA.VIEWS i

    INNER JOIN (SELECT o.name, c.text [ROUTINE_TEXT], o.create_date, o.modify_date

    FROM sys.syscomments c

    INNER JOIN sys.objects o on c.id = o.object_id) O

    ON i.TABLE_NAME = O.name

    WHERE PatIndex('@SearchText',VIEW_DEFINITION) > 0

    ) A

    ) B

    ORDER BY 1,3,2

    ","@SearchText",@SearchText)

    SET QUOTED_IDENTIFIER ON;

    BEGIN TRY

    EXEC sp_MSforeachdb @SQL;

    END TRY

    BEGIN CATCH

    PRINT ERROR_MESSAGE()

    PRINT @SQL

    END CATCH

    SELECT * FROM ##Report ORDER BY db,modify_date desc, [DB Object Type],[DB Object];

    DROP TABLE ##Report;