Sqlserver
 sql >> Database >  >> RDS >> Sqlserver

Dove viene archiviato il codice della procedura memorizzata in SQL Server?

Usa sys.sql_modules perché definition è nvarchar(max) perché non troncherà il codice lungo.

In INFORMATION_SCHEMA.ROUTINES il ROUTINE_DEFINITION la colonna è solo nvarchar(4000) quindi se provi a visualizzare il testo di una procedura lunga e vedrai che viene troncato.

Usalo per cercare testo in qualsiasi procedura, vista, funzione:

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 

utilizzalo per visualizzare il testo di una determinata procedura, vista, funzione:

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