lunes, 16 de agosto de 2010

Buscar un campo o algun nombre en un Stored Procedure SQL SERVER 2005

Hace algún tiempo tuve un problema, había que cambiar muchos campos de una tabla dentro de unos cuantos cientos de procedimientos almacenados en sql server 2005, una compañera de trabajo, encontro un poco de código googleando y pues yo igual, junte el código
adaptandolo a nuestras necesidades y sugió este procedimiento almacenado, que encuentra texto en los objetos de la base de datos manejada por sql server 2005,
espero les sirva.
------------------jefedigi-----------------------------------------------
-------busca un texto o cadena en los objetos de la bd-------------------
----------http://lafabricadesoftware.blogspot.com/-----------------------
CREATE PROCEDURE [dbo].[buscaTextoObjetosBD]
@SearchText AS VARCHAR(100)
AS
BEGIN
--DECLARE @SearchText AS VARCHAR(100)
--SET @SearchText = 'JEFEDIGI'
--Consulta de los procedimeintos que contienen dicho texto
SELECT DISTINCT USER_NAME(o.uid) + '.' + OBJECT_NAME(c.id) AS 'Object name',
CASE
WHEN OBJECTPROPERTY(c.id, 'IsReplProc') = 1
THEN 'Replication stored procedure'
WHEN OBJECTPROPERTY(c.id, 'IsExtendedProc') = 1
THEN 'Extended stored procedure'
WHEN OBJECTPROPERTY(c.id, 'IsProcedure') = 1
THEN 'Stored Procedure'
WHEN OBJECTPROPERTY(c.id, 'IsTrigger') = 1
THEN 'Trigger'
WHEN OBJECTPROPERTY(c.id, 'IsTableFunction') = 1
THEN 'Table-valued function'
WHEN OBJECTPROPERTY(c.id, 'IsScalarFunction') = 1
THEN 'Scalar-valued function'
WHEN OBJECTPROPERTY(c.id, 'IsInlineFunction') = 1
THEN 'Inline function'
WHEN OBJECTPROPERTY(c.id, 'IsView') = 1
THEN 'View'
END AS 'Object type'
FROM syscomments c
INNER JOIN
sysobjects o
ON c.id = o.id
WHERE c.text LIKE '%'+@SearchText+'%' AND
encrypted = 0 AND
( OBJECTPROPERTY(c.id, 'IsReplProc') = 1 OR
OBJECTPROPERTY(c.id, 'IsExtendedProc') = 1 OR
OBJECTPROPERTY(c.id, 'IsProcedure') = 1 OR
OBJECTPROPERTY(c.id, 'IsTrigger') = 1 OR
OBJECTPROPERTY(c.id, 'IsTableFunction') = 1 OR
OBJECTPROPERTY(c.id, 'IsScalarFunction') = 1 OR
OBJECTPROPERTY(c.id, 'IsInlineFunction') = 1 OR
OBJECTPROPERTY(c.id, 'IsView') = 1 )
union
SELECT TABLE_NAME,'Table' FROM INFORMATION_SCHEMA.tables
WHERE table_name LIKE '%'+@SearchText+'%'
UNION
SELECT COLUMN_NAME,'COLUMN' FROM INFORMATION_SCHEMA.COLUMNS
WHERE COLUMN_NAME LIKE '%'+@SearchText+'%'
ORDER BY [Object type], 'Object name'
END

No hay comentarios:

Publicar un comentario