How do I find a stored procedure containing ?

后端 未结 20 2022
梦谈多话
梦谈多话 2020-11-28 17:21

I need to search a SQL server 2008 for stored procedures containing where maybe the name of a database field or variable name.

相关标签:
20条回答
  • 2020-11-28 17:31
    SELECT * FROM sys.procedures WHERE Name LIKE '%CompanySpecialisation%'
    

    This is what I have written in SQL 2012 to select all stored procedures where name like "CompanySpecialisation"

    0 讨论(0)
  • 2020-11-28 17:31

    Stored Procedure for find text in SP.. {Dinesh Baskaran} Trendy Global Systems pvt ltd

      create Procedure [dbo].[TextFinder]
     (@Text varchar(500),@Type varchar(2)=NULL)
    AS
    BEGIN
    
    
    
    
    
    SELECT DISTINCT o.name AS ObjectName, 
    CASE o.xtype 
    WHEN 'C' THEN 'CHECK constraint ' 
    WHEN 'D' THEN 'Default or DEFAULT constraint'
    WHEN 'F' THEN 'FOREIGN KEY constraint'
    WHEN 'FN' THEN 'Scalar function'
    WHEN 'IF' THEN 'In-lined table-function'
    WHEN 'K' THEN 'PRIMARY KEY or UNIQUE constraint'
    WHEN 'L' THEN 'Log'
    WHEN 'P' THEN 'Stored procedure'
    WHEN 'R' THEN 'Rule'
    WHEN 'RF' THEN 'Replication filter stored procedure' 
    WHEN 'S' THEN 'System table'  
    WHEN 'TF' THEN 'Table function' 
    WHEN 'TR' THEN 'Trigger'  
    WHEN 'U' THEN 'User table' 
    WHEN 'V' THEN 'View' 
    WHEN 'X' THEN 'Extended stored procedure' 
    ELSE o.xtype 
    END AS ObjectType,  
    
    ISNULL( p.Name, '[db]') AS Location
    
    FROM syscomments c
    
    INNER JOIN sysobjects o ON c.id=o.id
    
    LEFT JOIN sysobjects p ON o.Parent_obj=p.id
    
    WHERE c.text LIKE '%' + @Text + '%' and
    
    o.xtype = case when @Type IS NULL then o.xtype  else @Type end 
    
    
    ORDER BY Location, ObjectName
    
    
    
    END
    
    0 讨论(0)
  • 2020-11-28 17:34

    I use this script. If you change your XML Comments to display as black text on a yellow background you get the effect of highlighting the text you're looking for in the xml column of the results. (Tools -> Options -> Environment -> Fonts and Colors [Display items: XML Comment]

        ---------------------------------------------
        --------------   Start  FINDTEXT   ----------
        ---------------------------------------------
    
        SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED 
        SET NOCOUNT ON
        GO
        DECLARE @SearchString VARCHAR(MAX) 
        SET @SearchString = 'the text you''re looking for'
        DECLARE @OverrideSearchStringWith VARCHAR(MAX) 
        --#############################################################################
        -- Use Escape chars in Brackets []  like [%] to find percent char.
        --############################################################################# 
    
        DECLARE @ReturnLen INT 
        SET @ReturnLen = 50;
        with    lastrun
                  as (select    DEPS.OBJECT_ID
                               ,MAX(last_execution_time) as LastRun
                      from      sys.dm_exec_procedure_stats DEPS
                      group by  deps.object_id
                     )
            SELECT  OL.Type
                   ,OBJECT_NAME(OL.Obj_ID) AS 'Name'
                   ,LTRIM(RTRIM(REPLACE(SUBSTRING(REPLACE(OBJECT_DEFINITION(OL.Obj_ID), NCHAR(0x001F), ''), CHARINDEX(@SearchString, OBJECT_DEFINITION(OL.Obj_ID)) - @ReturnLen, @ReturnLen * 2), @SearchString, '   ***-->>' + @SearchString + '<<--***  '))) AS SourceLine
                   ,CAST(REPLACE(REPLACE(REPLACE(REPLACE(CONVERT(VARCHAR(MAX), REPLACE(OBJECT_DEFINITION(OL.Obj_ID), NCHAR(0x001F), '')), '&', '(A M P)'), '<', '(L T)'), '>', '(G T)'), @SearchString, '<!-->' + @SearchString + '<-->') AS XML) AS 'Hilight Search'
                   ,(SELECT [processing-instruction(A)] = REPLACE(OBJECT_DEFINITION(OL.Obj_ID), NCHAR(0x001F), '')
                    FOR
                     XML PATH('')
                        ,TYPE
                    ) AS 'code'
                   ,Modded AS Modified
                   ,LastRun as LastRun
            FROM    (SELECT CASE P.type
                              WHEN 'P' THEN 'Proc'
                              WHEN 'V' THEN 'View'
                              WHEN 'TR' THEN 'Trig'
                              ELSE 'Func'
                            END AS 'Type'
                           ,P.OBJECT_ID AS OBJ_id
                           ,P.modify_Date AS modded
                           ,LastRun.LastRun
                     FROM   sys.Objects P WITH (NOLOCK)
                            LEFT join lastrun on P.object_id = lastrun.object_id
                     WHERE  OBJECT_DEFINITION(p.OBJECT_ID) LIKE '%' + @SearchString + '%'
                            AND type IN ('P', 'V', 'TR', 'FN', 'IF', 'TF')
                         --   AND lastrun.LastRun  IS NOT null
                    ) OL
        OPTION  (FAST 10)
    
        ---------------------------------------------
        ----------------    END     -----------------
        ---------------------------------------------
        ---------------------------------------------
    
    0 讨论(0)
  • 2020-11-28 17:35
    SELECT ROUTINE_NAME, ROUTINE_DEFINITION
        FROM INFORMATION_SCHEMA.ROUTINES 
        WHERE ROUTINE_DEFINITION LIKE '%Foo%' 
        AND ROUTINE_TYPE='PROCEDURE'
    

    SELECT OBJECT_NAME(id) 
        FROM SYSCOMMENTS 
        WHERE [text] LIKE '%Foo%' 
        AND OBJECTPROPERTY(id, 'IsProcedure') = 1 
        GROUP BY OBJECT_NAME(id)
    

    SELECT OBJECT_NAME(object_id)
        FROM sys.sql_modules
        WHERE OBJECTPROPERTY(object_id, 'IsProcedure') = 1
        AND definition LIKE '%Foo%'
    
    0 讨论(0)
  • 2020-11-28 17:35

    Grab yourself a copy of the free Red-Gate SQL Search tool and start enjoying searching in SQL Server! :-)

    enter image description here

    It's a great and very useful tool, and YES! it's totally, absolutely FREE for any kind of use.

    0 讨论(0)
  • 2020-11-28 17:35

    I took Kashif's answer and union'd all of them together. Strangely, sometimes, I found results in one of the selects but not the other. So to be safe, I run all 3 when I'm looking for something. Hope this helps:

    DECLARE @SearchText varchar(1000) = 'mytext';
    
    SELECT DISTINCT SPName 
    FROM (
        (SELECT ROUTINE_NAME SPName
            FROM INFORMATION_SCHEMA.ROUTINES 
            WHERE ROUTINE_DEFINITION LIKE '%' + @SearchText + '%' 
            AND ROUTINE_TYPE='PROCEDURE')
        UNION ALL
        (SELECT OBJECT_NAME(id) SPName
            FROM SYSCOMMENTS 
            WHERE [text] LIKE '%' + @SearchText + '%' 
            AND OBJECTPROPERTY(id, 'IsProcedure') = 1 
            GROUP BY OBJECT_NAME(id))
        UNION ALL
        (SELECT OBJECT_NAME(object_id) SPName
            FROM sys.sql_modules
            WHERE OBJECTPROPERTY(object_id, 'IsProcedure') = 1
            AND definition LIKE '%' + @SearchText + '%')
    ) AS T
    ORDER BY T.SPName
    
    0 讨论(0)
提交回复
热议问题