Используйте sys.sql_modules
, потому что definition
это nvarchar(max)
, потому что он не будет усекать длинный код.
В INFORMATION_SCHEMA.ROUTINES
столбец ROUTINE_DEFINITION
это только nvarchar(4000)
, поэтому, если вы попытаетесь просмотреть текст длинной процедуры, и вы увидите, что она усечена.
Используется для поиска текста в любой процедуры, вид, функции:
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
используется для просмотра текста данной процедуры, вид, функции:
select * from sys.sql_modules where object_id=object_id('YourProcedure')
sys.sql_modules кажется почти неизвестным. это истинное решение sql05 +, а не infoschema и syscomments – devio
@devio, оно находится в BOL: http://msdn.microsoft.com/en-us/library/ms175081.aspx, поэтому я не уверен, почему никто знает об этом. Если вы хотите полное определение, то это 'THE' решение. –
Почему вы использовали предложение DISTINCT, может ли быть несколько строк для любого объекта? – Zia