Localizar string dentro de uma procedure

155 views
Skip to first unread message

Wagner Marrane

unread,
Aug 6, 2014, 8:18:24 AM8/6/14
to sqlse...@googlegroups.com
Bom dia Sr(s),

Preciso localizar uma string entre as diversas procedures que tenho gravadas no meu banco. Alguém possui algum script?

--
Atenciosamente,

Wagner R. Marrane

Lucas Dias

unread,
Aug 6, 2014, 8:25:03 AM8/6/14
to sqlse...@googlegroups.com
Veja se isso resolve!

SP_MSFOREACHDB'
USE ?
SELECT DISTINCT ''?'' AS Banco, O.Name
FROM SYSOBJECTS O, SYSCOMMENTS C
WHERE O.ID=C.ID
AND C.TEXT LIKE ''%VALOR_PESQUISADO%'''


--

---
You received this message because you are subscribed to the Google Groups "SQLServerDF" group.
To unsubscribe from this group and stop receiving emails from it, send an email to sqlserverdf...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Fabio Cordeiro alexandre

unread,
Aug 6, 2014, 8:58:29 AM8/6/14
to sqlse...@googlegroups.com
Wagner,

eu uso esse script:

CREATE TABLE #SPTMP(LINHA VARCHAR(MAX))
DECLARE @PROCEDURE VARCHAR(100)
DECLARE T CURSOR FAST_FORWARD FOR
SELECT NAME FROM sys.sysobjects WHERE xtype = 'P' order by name
OPEN T
FETCH NEXT FROM T INTO @PROCEDURE
WHILE (@@FETCH_STATUS = 0)

BEGIN
INSERT INTO #SPTMP
EXEC SP_HELPTEXT @PROCEDURE

IF EXISTS(SELECT * FROM #SPTMP WHERE LINHA LIKE '%LogSistema%')
BEGIN
PRINT(@PROCEDURE)
END
TRUNCATE TABLE #SPTMP
FETCH NEXT FROM T INTO @PROCEDURE
END
CLOSE T
DEALLOCATE T
DROP TABLE #SPTMP
--
Fábio Cordeiro Alexandre

Fabricio França Lima

unread,
Aug 6, 2014, 9:07:00 AM8/6/14
to sqlse...@googlegroups.com
Segue mais um que serve para ser executado em uma única base:

-- SQL 2000 e posteriores
SELECT B.name ,
case type when ‘P’ then ‘Stored procedure’
when FN’ then ‘Function’
when ‘TF’ then ‘Function’
when ‘TR’ then ‘Trigger’
when ‘V’ then ‘View’
else ‘Outros Objetos’
end
FROM syscomments A (nolock)
JOIN sysobjects B (nolock) on A.Id = B.Id
WHERE A.Text like ‘%Nome_Objeto%’  –Objto a ser procurado
ORDER BY 2 DESC

-- 2005/2008
SELECT type_desc, obj.name AS SP_NAME,  sqlmod.definition AS SP_DEFINITION
FROM sys.sql_modules AS sqlmod
INNER JOIN sys.objects AS obj ON sqlmod.object_id = obj.object_id
WHERE sqlmod.definition LIKE ‘%Nome_Objeto%’  –Objto a ser procurado
ORDER BY type_desc
Tenho mais alguns scripts nessa página que podem ser úteis: 


Atenciosamente,

Fabrício França Lima

MCITP - SQL Server Database Administrator


 

Socorro Vieira

unread,
Aug 6, 2014, 9:08:00 AM8/6/14
to sqlse...@googlegroups.com
a sys.syscomments atende através do filtro text like '%%'


On Wed, Aug 6, 2014 at 9:58 AM, Fabio Cordeiro alexandre <fabio.corde...@gmail.com> wrote:



--
Socorro Vieira
DBA | MCP  | MCITP | MTA | MTAC

Socorro Vieira

unread,
Aug 6, 2014, 9:08:54 AM8/6/14
to sqlse...@googlegroups.com
também pode ser pela

sys.sql_modules

Leonardo Pedroso Costa

unread,
Aug 6, 2014, 9:09:16 AM8/6/14
to sqlse...@googlegroups.com
Cara,
um select simples na sys.sql_modules ou na sys.comments resolve sua vida !

select OBJECT_NAME(object_id) as Objeto, * from sys.sql_modules where [definition] like '%CAM%'

select OBJECT_NAME(id) as Objeto, * from sys.syscomments where [TEXT] like '%CAM%'

Leonardo Pedroso Costa
DBA SQL Server
Belo Horizonte - MG

Alexandre Fadul

unread,
Aug 6, 2014, 9:15:05 AM8/6/14
to sqlse...@googlegroups.com
Tenho uma que uma vez procurei na internet que é batata. Sempre funcionou muito bem comigo:

SELECT A.NAME, A.TYPE, B.TEXT
  FROM SYSOBJECTS  A (nolock)
  JOIN SYSCOMMENTS B (nolock) 
    ON A.ID = B.ID
WHERE B.TEXT LIKE '%TEXTO DE PESQUISA%'  --- Informação a ser procurada no corpo da procedure, funcao ou view
  AND A.TYPE = 'P'                     --- Tipo de objeto a ser localizado no caso procedure
 ORDER BY A.NAME

/*
--A.TYPE = 'P' | Seleciona o objeto de pesquisa
U => Tabela Usuário
S => Tabela de sistema
P => Procedure
V => View
F => Function
*/

Para Pesquisar em Triggers:

SELECT OBJECT_NAME(id) 
FROM syscomments 
WHERE [text] LIKE '%TEXTO DE PESQUISA%' AND OBJECTPROPERTY(id, 'IsTrigger') = 1 
GROUP BY OBJECT_NAME(id)

Para Pesquisar em Jobs:

SELECT name NOME_JOB, step_name ,command CODIGO, last_run_date
FROM msdb.dbo.sysjobs A
join msdb.dbo.sysjobsteps B on A.Job_id = B.Job_Id
WHERE command like '%TEXTO DE PESQUISA%'
ORDER BY name

Advaldo de Paiva Moreira

unread,
Aug 6, 2014, 9:18:13 AM8/6/14
to sqlse...@googlegroups.com
Lembrando que nada disso funciona em objetos criptografados e em Linked Server.


Fabio Cordeiro alexandre

unread,
Aug 6, 2014, 9:29:33 AM8/6/14
to sqlse...@googlegroups.com
Essa do SQL_Modules eu não sabia =~

kkakakakaakakaka!! vou mudar meu codigo!! =D

Wagner Marrane

unread,
Aug 6, 2014, 12:50:59 PM8/6/14
to sqlse...@googlegroups.com
Fantástico!

Obrigado a todos pela ajuda!
Atenciosamente,

Wagner R. Marrane

Jeronymo Araújo

unread,
Aug 6, 2014, 1:24:10 PM8/6/14
to sqlse...@googlegroups.com
Prezado

Ha alguns meses comprei um livro chamado DMV EM AÇÃO, inclusive,excelente por sinal, 
o  livro informa sobre como trabalhar com as diversas DMVS que o sql oferece.
se interessar segue o link da livraria cultura

então 
neste livro ha diversas querys de exemplo e acho que uma em especifico vai te ajudar , 

voce pode usar como parametro a palavra que  voce deseja procurar  e query retorna
o sql da consulta e informa tambem o database onde esta query  da palavra procurada está

veja se ajuda 


SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED

SELECT --TOP 20
SUBSTRING (qt.text,(qs.statement_start_offset/2) + 1,
((CASE WHEN qs.statement_end_offset = -1
THEN LEN(CONVERT(NVARCHAR(MAX), qt.text)) * 2
ELSE qs.statement_end_offset
END - qs.statement_start_offset)/2) + 1) AS [Individual Query]
, qt.text AS [Parent Query]
, DB_NAME(qt.dbid) AS DatabaseName
, qp.query_plan
FROM sys.dm_exec_query_stats qs
CROSS APPLY sys.dm_exec_sql_text(qs.sql_handle) as qt
CROSS APPLY sys.dm_exec_query_plan(qs.plan_handle) qp
WHERE SUBSTRING (qt.text,(qs.statement_start_offset/2) + 1,
((CASE WHEN qs.statement_end_offset = -1
THEN LEN(CONVERT(NVARCHAR(MAX), qt.text)) * 2
ELSE qs.statement_end_offset
END - qs.statement_start_offset)/2) + 1)
LIKE '%palavra%'




2014-08-06 9:18 GMT-03:00 Wagner Marrane <wmar...@gmail.com>:

--

Wagner Marrane

unread,
Aug 6, 2014, 1:52:08 PM8/6/14
to sqlse...@googlegroups.com
Pessoal eu mandei o livro, porém há um limite de envio de anexo. o Livro tem 13 mb e o limite é de 8 mb, quem quiser o livro eu mando.


Em 6 de agosto de 2014 14:32, Wagner Marrane <wmar...@gmail.com> escreveu:
Aproveitando o email do nosso amigo Jeronymo, anexo o e-book em ingles desse livro.





--
Atenciosamente,

Wagner R. Marrane

Jeronymo Araújo

unread,
Aug 6, 2014, 2:18:46 PM8/6/14
to sqlserverdf
Prezados

segue o  link 




SQL Server DMVs in Action

Better Queries with Dynamic Management Views


SQL Server DMVs in Action
QR code - SQL Server DMVs in Action 
QR Code

Book Description

SQL Server DMVs in Action shows you how to obtain, interpret, and act on the information captured by DMVs to keep your system in top shape. The over 100 code examples help you master DMVs and give you an instantly reusable SQL library. You'll also learn to use Dynamic Management Functions (DMFs), which provide further details that enable you to improve your system's performance and health.

Book Details

Publisher:Manning
By:Ian W. Stirk
ISBN:978-1-935-18273-3
Year:2011
Pages:352
Language:English
File size:13.4 MB
File format:PDF

eBook

Download:SQL Server DMVs in Action

Paper Book

Buy:SQL Server DMVs in Action

Online Book

Read:SQL Server DMVs in Action

Patrocinio Maia Diniz

unread,
Aug 7, 2014, 4:34:44 PM8/7/14
to sqlse...@googlegroups.com
Eu gosto de usar o seguinte comando:

select routine_name as NomeObjeto, routine_definition as TSQL from information_schema.routines
where routine_definition like '%%'
Reply all
Reply to author
Forward
0 new messages