Monday 14 May 2007

Script to find out specific word in database

DECLARE @SSQL VARCHAR(200)
SELECT @COLUMN = '%' + @COLUMN + '%'



SET NOCOUNT ON

SELECT @SSQL = 'TABLES THAT CONTAIN COLUMNS THAT BEGIN WITH ' + @COLUMN
SELECT @SSQL
PRINT '----------------------------------------------------------'
SELECT CONVERT(VARCHAR(60), O.NAME) "TABLE NAME"
FROM SYSCOLUMNS C, SYSOBJECTS O, MASTER.DBO.SYSTYPES T
WHERE C.ID = O.ID AND C.XTYPE = T.XTYPE
AND C.NAME LIKE @COLUMN
AND O.TYPE = 'U'
GROUP BY O.NAME

/*FOR STORED PROCEDURES, ADD WILDCARD TO BEGINNING BECAUSE COLUMN WILL BE CONTAINED WITHIN TEXT*/
SELECT @COLUMN = '%' + @COLUMN

SELECT @SSQL = 'PROCS THAT CONTAIN THE WORD ' + REPLACE(@COLUMN, '%', '')
SELECT @SSQL
PRINT '----------------------------------------------------------'
SELECT CONVERT(VARCHAR(60), O.NAME) "NAME",
CASE WHEN O.XTYPE='P' THEN 'STORED PROCEDURE'
WHEN O.XTYPE='TR' THEN 'TRIGGER'
WHEN O.XTYPE='V' THEN 'VIEW'
WHEN O.XTYPE='FN' THEN 'FUNCTION'
END [OBJECT TYPE]
FROM SYSOBJECTS O, SYSCOMMENTS C
WHERE O.ID = C.ID
AND C.TEXT LIKE @COLUMN

SET NOCOUNT OFF

No comments: