Querys do Dia a Dia – Como encontrar um texto em Functions, Views e Procedures
Fala Pessoal,
Antes de incluir/excluir/alterar um campo de uma tabela ou antes de incluir/excluir/alterar uma procedure, function ou view se faz necessário procurar no script do banco de dados se esses objetos que serão alterados são utilizados por alguma função, view ou SP.
Constantemente eu preciso realizar esse tipo de operação. Para isso, utilizo a query abaixo que procura um determinado texto em procedures, view e functions em uma determinada database.
– Compatível com o SQL Server 2000
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
Entretanto, seu objeto ainda pode ser utilizado diretamente dentro de algum step de seus jobs. Para fazer uma busca em todos os Steps de Jobs por um texto, basta rodar a query abaixo:
– Procura dentro de Job’s
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 ‘%Nome_Objeto%’
ORDER BY name
Também existem ferramentas de terceiros que realizam essas consultas.
Nunca encontrei um modo parecido de realizar uma busca de um objeto, que está sendo utilizado dentro de uma task de um DTS(SQL Server 2000) ou SSIS (2005/2008). Caso exista, deixe um comentário que será de grande valor.
Abraços,
Fabrício França Lima


very útil, obrigada
[Reply]
Fabricio Lima Reply:
fevereiro 10th, 2011 at 11:43
Obrigado Andreia.
[Reply]
Resolveu meu problema.
Muito obrigado!
[Reply]
Fabricio Lima Reply:
março 21st, 2012 at 20:30
Que bom que ajudou Robert.
Abraços
[Reply]
Estou precisando consultar dentro de uma task de um DTS. Um ano após o post, será que já descobriu alguma forma? Rs
Desde já agradeço a atenção.
Abs
[Reply]
Fabricio Lima Reply:
junho 23rd, 2012 at 20:42
Infelizmente não Augusto…
Seria sensacional essa funcionalidade.
A única coisa que podemos fazer é usar procedures dentro das tasks.
Abraço.
[Reply]