Utilizzare sys.sql_modules
perché definition
è nvarchar(max)
perché non troncerà il codice lungo.
In INFORMATION_SCHEMA.ROUTINES
la colonna ROUTINE_DEFINITION
è solo nvarchar(4000)
quindi se si tenta di visualizzare il testo di una procedura lunga e si vedrà che è troncato.
Utilizzare questo per la ricerca di testo in qualsiasi procedimento, 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 2,1
uso questo per visualizzare il testo di una determinata procedura, vista, funzione:
select * from sys.sql_modules where object_id=object_id('YourProcedure')
fonte
2010-03-16 13:46:23
sys.sql_modules sembra quasi sconosciuto. è la vera soluzione sql05 +, piuttosto che infoschema e syscomments – devio
@devio, è in BOL: http://msdn.microsoft.com/en-us/library/ms175081.aspx, quindi non sono sicuro del perché nessuno lo sa. Se vuoi la definizione completa, allora è la soluzione 'THE'. –
perché hai usato la clausola DISTINCT, possono esserci più righe per qualsiasi oggetto? – Zia