НЕ ПОЛЬЗОВАТЬСЯ ИНФОРМАЦИЕЙ_SCHEMA.ROUTINES , потому что ROUTINE_DEFINITION
- это всего лишь nvarchar(4000)
.Вам нужно sys.sql_modules
, где definition
- это nvarchar (max)
, попробуйте любой из них, чтобы найти процедуру, которую нужно изменить:
SELECT DISTINCT
LEFT(s.name+'.'+o.name, 100) AS Object_Name,o.type_desc --, m.definition
FROM sys.sql_modules m
INNER JOIN sys.objects o ON m.object_id=o.object_id
INNER JOIN sys.schemas s ON o.schema_id=s.schema_id
WHERE m.definition Like '%'+@SearchValue+'%'
ORDER BY 1
SELECT
OBJECT_SCHEMA_NAME(m.object_id)+'.'+OBJECT_NAME(m.object_id) --, m.definition
FROM sys.sql_modules m
WHERE m.definition like '%whatever%'
SELECT
OBJECT_SCHEMA_NAME(m.object_id)+'.'+OBJECT_NAME(m.object_id), o.type_desc
--,m.definition
FROM sys.sql_modules m
INNER JOIN sys.objects o ON m.object_id=o.object_id
WHERE m.definition like '%whatever%'
, которую можно раскомментировать m.definition
перечислить содержимое, но я считаю, что лучше просто идентифицировать все процедуры, а затем просмотреть их вручную, потому что вы не хотите запускать команды UPDATE для системных таблиц.Запишите необходимые процедуры, внесите изменения (поиск / замена или вручную), а затем запустите сценарии !!!