Добро пожаловать в форум, Guest >> Войти | Регистрация | Поиск | Правила | | В избранное | Подписаться | ||
Все форумы / Microsoft SQL Server |
![]() ![]() |
receiver Member Откуда: Сообщений: 269 |
Как найти строку в хранимых процедурах, отображенных в SQL Server Manager Studio? Вижу сотни процедур и функций. Нужно найти в каких из них встречается строка "> FIRST_DATE". Как это сделать? В имеющихся меню ответа не углядел. |
10 дек 13, 12:33 [15270199] Ответить | Цитировать Сообщить модератору |
Crimean Member Откуда: Сообщений: 13148 |
грубо, но, обычно, эффективноselect distinct object_name( id ) from syscomments where text like '%ваш код%' |
10 дек 13, 12:34 [15270218] Ответить | Цитировать Сообщить модератору |
Jovanny Member Откуда: Сообщений: 1196 |
SELECT OBJECT_SCHEMA_NAME(object_id) AS [Schema], OBJECT_NAME(object_id) AS [Object] FROM sys.sql_modules AS S WHERE S.definition LIKE '%search pattern%' |
10 дек 13, 12:38 [15270248] Ответить | Цитировать Сообщить модератору |
receiver Member Откуда: Сообщений: 269 |
Спасибо, это "оно"! |
10 дек 13, 12:47 [15270357] Ответить | Цитировать Сообщить модератору |
iap Member Откуда: Москва Сообщений: 47047 |
receiver,SELECT name FROM sysobjects WHERE type='P' AND OBJECT_DEFINITION(object_id) LIKE N'%> FIRST[_]DATE%'; |
10 дек 13, 12:50 [15270395] Ответить | Цитировать Сообщить модератору |
Valera Kochemasov Member Откуда: Moscow Сообщений: 19 |
--==-- pDropProc pFind go --131218 valkoch at gmail com --Поиск create proc pFind @vFind varchar(max), @iItem int=1 as set nocount on begin try -- declare @objs table (ID int, name sysname, type sysname, Ord int identity) insert @objs select ID, name, type from ( select ID, name, type, case type when 'V' then 0 when 'P' then 1 when 'IF' then 2 when 'TF' then 3 when 'FN' then 3 else 4 end Ord from ( select Obj.ID, name, type from sys.syscomments Cmm join sys.sysobjects Obj on Cmm.ID=Obj.ID where text like '%'+@vFind+'%' ) Qry group by ID, type, name ) Qry order by Ord select * from @objs declare @temp table (txt varchar(max), ID int identity) insert @temp select text from sys.syscomments where id=(select ID from @objs where Ord=@iItem) declare @int int select @int=min(ID) from @temp declare @max int select @max=max(ID) from @temp declare @vText varchar(max) set @vText='' while @int<=@max begin select @vText=@vText+txt from @temp where ID=@int set @int=@int+1 end print @vText -- end try begin catch select error_message() end catch go --example exec pFind 'declare', 1 |
18 дек 13, 20:45 [15313833] Ответить | Цитировать Сообщить модератору |
iap Member Откуда: Москва Сообщений: 47047 |
![]() SELECT name FROM sys.objects WHERE type='P' AND OBJECT_DEFINITION(object_id) LIKE N'%> FIRST[_]DATE%'; |
||
18 дек 13, 20:47 [15313842] Ответить | Цитировать Сообщить модератору |
Valera Kochemasov Member Откуда: Moscow Сообщений: 19 |
малёк поточнее:if exists(select * from sys.objects where name='pFindText') drop proc pFindText go create proc pFindText @vFind varchar(max), @iItem int=1 as set nocount on begin try -- declare @objs table (ID int, name sysname, type sysname, Ord int identity) insert @objs select ID, name, type from ( select ID, name, type, case type when 'V' then 0 when 'P' then 1 when 'IF' then 2 when 'TF' then 3 when 'FN' then 3 else 4 end Ord from ( select Obj.ID, name, type from sys.syscomments Cmm join sys.sysobjects Obj on Cmm.ID=Obj.ID where text like '%'+@vFind+'%' ) Qry group by ID, type, name ) Qry order by Ord select * from @objs declare @temp table (txt varchar(max), ID int identity) insert @temp select text from sys.syscomments where id=(select ID from @objs where Ord=@iItem) declare @int int select @int=min(ID) from @temp declare @max int select @max=max(ID) from @temp declare @vText varchar(max) set @vText='' while @int<=@max begin select @vText=@vText+txt from @temp where ID=@int set @int=@int+1 end print @vText -- end try begin catch select error_message() end catch go --example exec pFindText 'declare', 1 go |
18 дек 13, 20:55 [15313880] Ответить | Цитировать Сообщить модератору |
SQL Refactor Studio Team Member Откуда: Сообщений: 84 |
Попробуйте наше творение. Вводите текст, который хотите найти и получаете информацию в удобном виде. Пример: Ищу в базе данных объекты, где встречается текст "1998" ![]() |
19 дек 13, 05:37 [15314888] Ответить | Цитировать Сообщить модератору |
Все форумы / Microsoft SQL Server | ![]() |