Ich brauchte die Zeilen der gespeicherten Prozeduren einmal, um verfolgen zu können, ob ich eine Referenz auf eine Funktion, Prozedur oder Tabelle habe oder manchmal, um etwas im Code der SP zu finden.
Wo speichert SQL Server den Code der Prozedur?
Ich brauchte die Zeilen der gespeicherten Prozeduren einmal, um verfolgen zu können, ob ich eine Referenz auf eine Funktion, Prozedur oder Tabelle habe oder manchmal, um etwas im Code der SP zu finden.
Wo speichert SQL Server den Code der Prozedur?
Verwenden Sie sys.sql_modules
, weil definition
nvarchar(max)
ist, da es langen Code nicht abschneidet.
In INFORMATION_SCHEMA.ROUTINES
ist die Spalte ROUTINE_DEFINITION
nur nvarchar(4000)
, daher wird der Text einer langen Prozedur abgeschnitten.
Verwenden Sie dies, um nach Text in jeder Prozedur, Sicht oder Funktion zu suchen:
SELECT DISTINCT
o.name AS Object_Name, o.type_desc
FROM sys.sql_modules m
INNER JOIN sys.objects o ON m.object_id=o.object_id
WHERE m.definition Like '%'+@Search+'%'
ORDER BY o.type_desc, o.name
Verwenden Sie dies, um den Text einer bestimmten Prozedur, Sicht oder Funktion anzuzeigen:
select * from sys.sql_modules where object_id=object_id('IhreProzedur')
Sie können verwenden
select object_definition(object_id(routine_name)) from information_schema.routines
oder
select object_definition(object_id) from sys.objects where name = 'foo'
oder sogar
select object_definition(object_id('foo')); -- 'foo' ist der Tabellenname
Diese Versionen werden nie gekürzt.
Es wurde im Systemschema in den Tabellen gespeichert:
SELECT * FROM INFORMATION_SCHEMA.ROUTINES
Siehe MSDN über die INFORMATION_SCHEMA.ROUTINES
Ansicht:
ms-help://MS.SQLCC.v10/MS.SQLSVR.v10.de/s10de_6tsql/html/c75561b2-c9a1-48a1-9afa-a5896b6454cf.htm
Für eine Inhaltsuche hierzu können Sie das Folgende tun:
SELECT * FROM INFORMATION_SCHEMA.ROUTINES
WHERE ROUTINE_DEFINITION LIKE '%Suchbegriff%'
Wenn Sie versuchen, nach Verweisen auf andere Objekte zu suchen, können Sie eine Abfrage wie diese ausführen:
SELECT * FROM syscomments WHERE TEXT LIKE '%Suchbegriff%'
Dadurch werden alle Objekte in der Datenbank zurückgegeben, die den Suchbegriff referenzieren. Sie können dann diese Objekte überprüfen, um zu sehen, welche gespeicherten Prozeduren (sowie Ansichten und Funktionen) dies tun.
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.