Página Inicial > Administração de Banco de Dados, Querys do Dia a Dia, Virtual PASS BR > Querys do Dia a Dia – Como encontrar um texto em Functions, Views e Procedures

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

  1. Andreia
    10, fevereiro, 2011 em 09:40 | #1

    very útil, obrigada

    [Reply]

    Fabricio Lima Reply:

    Obrigado Andreia.

    [Reply]

  2. Robert Koch
    20, março, 2012 em 18:13 | #2

    Resolveu meu problema.
    Muito obrigado!

    [Reply]

    Fabricio Lima Reply:

    Que bom que ajudou Robert.

    Abraços

    [Reply]

  3. Augusto
    22, junho, 2012 em 16:08 | #3

    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:

    Infelizmente não Augusto…

    Seria sensacional essa funcionalidade.

    A única coisa que podemos fazer é usar procedures dentro das tasks.

    Abraço.

    [Reply]

  1. Nenhum trackback ainda.

Follow

Get every new post delivered to your Inbox

Join other followers