Ich muss einen SQL Server 2008 nach gespeicherten Prozeduren durchsuchen, die vielleicht den Namen eines Datenbankfeldes oder den Namen einer Variablen.
Antworten
Zu viele Anzeigen?
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
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
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]
Tapan kumar
Punkte
6180
Jitendra Sawant
Punkte
608