19

Jul

Ricerca a tappeto in SQL Server

Ciao a tutti

 

qualche volta capita di dover effettuare quella che si può definire una ricerca a tappeto in SQL Server come quando sappiamo cosa cerchiamo, ma non sappiamo in che colonna e che tabella è

Lo scenario tipico è quando si deve modificare un DB di configurazione non scritto da noi, di cui non abbiamo specifiche

in questi casi allora è possibile utilizzare un semplice script SQL per farci tornare un resultset con nometabella + nomecampo + valore trovato

es:

  


CREATE TABLE #risp (
    value varchar(max)
)

declare @sql varchar(max) = '';

select @sql = @sql + '
IF EXISTS(SELECT ' + c.name + ' FROM ' + t.name + ' where ' + c.name + ' like ''%reportserver%'')
    INSERT INTO #risp
        SELECT  ''' + c.name + '|' + t.name + ''' + ' +
        + c.name + ' FROM ' + t.name + ' where ' + c.name + ' like ''%reportserver%''
'
from sys.all_columns c
inner join sys.tables t on c.object_id=t.object_id
LEFT OUTER JOIN sys.types AS u ON u.user_type_id = c.user_type_id
where u.name like '%varchar%'

exec(@sql)

SELECT * FROM #risp
drop table #risp;

 

#risp è una tabella temporanea

%reportserver% è il valore che stavo cercando in questo esempio sul DB di TFS

 

a presto

by Antonio Esposito on 7/19/2011