Sqlserver
 sql >> Datenbank >  >> RDS >> Sqlserver

Wo speichert SQL Server den Code der gespeicherten Prozedur?

Verwenden Sie sys.sql_modules weil definition ist nvarchar(max) weil es keinen langen Code abschneidet.

In INFORMATION_SCHEMA.ROUTINES die ROUTINE_DEFINITION Spalte ist nur nvarchar(4000) Wenn Sie also versuchen, den Text einer langen Prozedur anzuzeigen, werden Sie feststellen, dass er abgeschnitten ist.

Verwenden Sie dies, um in jeder Prozedur, Ansicht, Funktion nach Text 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 '%'[email protected]+'%'
    ORDER BY o.type_desc,o.name 

Verwenden Sie dies, um den Text einer bestimmten Prozedur, Ansicht, Funktion anzuzeigen:

select * from sys.sql_modules where object_id=object_id('YourProcedure')