Search specific string inside Stored Procedure, View, Function, Trigger, Table Name, Table Field in SQL Server
this query can be used to search specific string inside, no need to right click - modify - and search manually from Query designer / SSMS
until then
DECLARE @NextString NVARCHAR(40)
DECLARE @Pos INT
DECLARE @NextPos INT
DECLARE @String NVARCHAR(40)
DECLARE @Delimiter NVARCHAR(40)
DECLARE @Query nvarchar(2000)
DECLARE @WHERE nvarchar(1000)
DECLARE @Query2 nvarchar(2000)
DECLARE @Where2 nvarchar(1000)
SET @Query =
'SELECT DISTINCT so.name, ' +
'CASE so.xtype ' +
'WHEN ''P'' THEN ''SPROC'' ' +
'WHEN ''IF'' THEN ''FUNCTION'' ' +
'WHEN ''FN'' THEN ''FUNCTION'' ' +
'WHEN ''V'' THEN ''VIEW'' ' +
'WHEN ''U'' THEN ''TABLE'' ' +
'WHEN ''TR'' THEN ''TRIGGER'' ' +
'END AS [TYPE] ' +
'FROM syscomments sc ' +
'RIGHT JOIN sysobjects so ON sc.id = so.id ' +
'WHERE '
SET @String = 'cab'
SET @WHERE = ''
SET @Where2 = ''
SET @Delimiter = ','
SET @String = 'cab' + @Delimiter
SET @Pos = CHARINDEX(@Delimiter,@String)
WHILE (@pos <> 0)
BEGIN
SET @NextString = LTRIM(RTRIM(SUBSTRING(@String, 1, @Pos - 1)))
PRINT 'next: ' + @NextString
IF LEN(@WHERE) > 0
BEGIN
SET @WHERE = @WHERE + ' OR sc.[TEXT] LIKE ''%' + @NextString + '%''' +
' OR so.[name] LIKE ''%' + @NextString + '%'''
print '42: ' + @where2
SET @Where2 = @where2 + ' OR T0.Name LIKE ''%' + @NextString + '%'' '
print '42: ' + @where2
END
ELSE
BEGIN
SET @WHERE = @WHERE + ' sc.[TEXT] LIKE ''%' + @NextString + '%''' +
' OR so.[name] LIKE ''%' + @NextString + '%'''
print '51: ' + @where2
SET @Where2 = @Where2 + ' t0.Name LIKE ''%' + @NextString + '%'' '
print '51: ' + @where2
END
SET @String = SUBSTRING(@String, @pos + 1, LEN(@String))
SET @pos = CHARINDEX(@Delimiter, @String)
END
SET @WHERE = 'so.xtype IN (''P'', ''IF'', ''FN'', ''V'', ''U'', ''TR'') AND (' + @WHERE + ')'
SET @Query2 =
'UNION ALL ' +
'SELECT t1.NAME, ''TABLE FIELD'' AS [TYPE] ' +
'FROM syscolumns t0 ' +
'INNER JOIN sysobjects t1 ON t0.ID = t1.ID ' +
'WHERE '
SELECT @Where2 = 't1.xType = ''U'' ' +
CASE WHEN LEN(@Where2) > 0 THEN ' AND (' + @Where2 + ')' ELSE '' END
PRINT @Query + @WHERE + @Query2 + @Where2
EXEC (@Query + @WHERE + @Query2 + @Where2)
Comments