Gibt es eine Möglichkeit, die gespeicherte Prozedur in SQL Server Management Studio nach Namen oder nach Teilen des Namens zu finden? (im aktiven Datenbankkontext)
Danke für die Hilfe
sql
database
sql-server-2005
ssms
Gruber
quelle
quelle
inner join sys.procedures p on p.object_id = c.id
stattdessen tunobject_definition(object_id(r.ROUTINE_NAME)),
alternativ das Problem verwenden.Angenommen, Sie befinden sich im Objekt-Explorer Details ( F7), in dem die Liste der gespeicherten Prozeduren angezeigt wird, klicken Sie auf die Schaltfläche Filter und geben Sie den Namen (oder den Teilnamen) ein.
quelle
Dies funktioniert (unter anderem) auch für Tabellen und Ansichten, nicht nur für Sprocs:
SELECT '[' + s.name + '].[' + o.Name + ']', o.type_desc FROM sys.objects o JOIN sys.schemas s ON s.schema_id = o.schema_id WHERE o.name = 'CreateAllTheThings' -- if you are certain of the exact name OR o.name LIKE '%CreateAllThe%' -- if you are not so certain
Außerdem erhalten Sie den Schemanamen, der in jeder nicht trivialen Datenbank nützlich ist (z. B. in einer Datenbank, in der Sie eine Abfrage benötigen, um eine gespeicherte Prozedur nach Namen zu finden).
quelle
Sie können diese Abfrage verwenden:
SELECT ROUTINE_CATALOG AS DatabaseName , ROUTINE_SCHEMA AS SchemaName, SPECIFIC_NAME AS SPName , ROUTINE_DEFINITION AS SPBody , CREATED AS CreatedDate, LAST_ALTERED AS LastModificationDate FROM INFORMATION_SCHEMA.ROUTINES WHERE (ROUTINE_DEFINITION LIKE '%%') AND (ROUTINE_TYPE='PROCEDURE') AND (SPECIFIC_NAME LIKE '%AssessmentToolDegreeDel')
Wie Sie sehen können, können Sie auch im Hauptteil der gespeicherten Prozedur suchen.
quelle
Sehr ordentlicher Trick Ich stolpere über eine SQL-Injection. Verwenden Sie im Objekt-Explorer im Suchfeld nur Ihre Prozentzeichen. Dadurch werden ALLE gespeicherten Prozeduren, Funktionen, Ansichten, Tabellen, Schemata, Indizes durchsucht. Ich habe es satt, an mehr zu denken :) :)
Suchmuster
quelle
Wenn ich einen Store Procedure-Namen habe und nicht weiß, zu welcher Datenbank er gehört, verwende ich Folgendes:
Use [master] GO DECLARE @dbname VARCHAR(50) DECLARE @statement NVARCHAR(max) DECLARE db_cursor CURSOR LOCAL FAST_FORWARD FOR --Status 48 (mirrored db) SELECT name FROM MASTER.dbo.sysdatabases WHERE STATUS NOT LIKE 48 AND name NOT IN ('master','model','msdb','tempdb','distribution') OPEN db_cursor FETCH NEXT FROM db_cursor INTO @dbname WHILE @@FETCH_STATUS = 0 BEGIN SELECT @statement = 'SELECT * FROM ['+@dbname+'].INFORMATION_SCHEMA.ROUTINES WHERE [ROUTINE_NAME] LIKE ''%name_of_proc%'''+';' print @statement EXEC sp_executesql @statement FETCH NEXT FROM db_cursor INTO @dbname END CLOSE db_cursor DEALLOCATE db_cursor
quelle
Für SQL Server Version 9.0 (2005) können Sie den folgenden Code verwenden:
select * from syscomments c inner join sys.procedures p on p.object_id = c.id where p.name like '%usp_ConnectionsCount%';
quelle
Option 1: Gehen Sie in SSMS zu
View > Object Explorer Details
oder drücken Sie F7. Verwenden Sie dieSearch
Box. Klicken Sie schließlich in der angezeigten Liste mit der rechten Maustaste und wählen SieSynchronize
, um das Objekt imObject Explorer
Baum zu finden.Option 2: Installieren Sie ein Add-On wie
dbForge Search
. Klicken Sie mit der rechten Maustaste auf die angezeigte Liste und wählen SieFind in Object Explorer
.quelle