397 Stimmen

Wie finde ich eine gespeicherte Prozedur, die <Text> enthält?

Ich muss einen SQL Server 2008 nach gespeicherten Prozeduren durchsuchen, die vielleicht den Namen eines Datenbankfeldes oder den Namen einer Variablen.

3voto

Alexander Punkte 88

Hier ist die Union-Version, die Losbear verwendet, aber so geändert, dass sie auch den Schemanamen ausgibt:

DECLARE @SearchText varchar(1000) = 'searchtext';

SELECT DISTINCT sc.SPECIFIC_SCHEMA as 'Schema', sp.SPName as 'Name'
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 sp
CROSS APPLY (select SPECIFIC_SCHEMA from INFORMATION_SCHEMA.ROUTINES r where r.ROUTINE_NAME = sp.SPName) sc
ORDER BY 1

3voto

Kamal Pratap Punkte 159

So finden Sie eine gespeicherte Prozedur, die Text oder eine Zeichenfolge enthält

Oft müssen wir den Text oder die Zeichenfolge in der gespeicherten Prozedur finden. Hier ist die Abfrage, um den enthaltenen Text zu finden.

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

Für weitere Informationen besuchen Sie bitte die unten angegebene URL.

http://www.freshcodehub.com/Article/34/how-to-find-a-stored-procedure-containing-text-or-string

2voto

AliNajafZadeh Punkte 402

Versuchen Sie folgenden Code:

DECLARE @SearchText NVARCHAR(2000) = N'YourText';
SELECT   DISTINCT SCHEMA_NAME(o.schema_id),o.name,[text] AS MainTextProc
FROM     sys.syscomments AS c
         INNER JOIN sys.objects AS o ON c.id = o.[object_id]
         INNER JOIN sys.schemas AS s ON o.schema_id = s.schema_id
WHERE    c.[text] LIKE '%'+ @SearchText +'%'
ORDER BY  SCHEMA_NAME(o.schema_id),o.[name]

1voto

Tapan kumar Punkte 6180
SELECT * FROM sys.procedures WHERE Name LIKE '%CompanySpecialisation%'

Das habe ich in SQL 2012 geschrieben, um alle gespeicherten Prozeduren auszuwählen, deren Name wie "CompanySpecialisation" lautet

1voto

Jitendra Sawant Punkte 608
SELECT name FROM sys.procedures WHERE Object_definition(object_id) LIKE '%FOO%'

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X