Tested on SQL Server 7.0, 2000 and 2005
You have to supply value to search and for what data type…
Script would return all tables with all columns for matching criteria….
examples to execute:
rf_helpfindvalueall ‘Value_to_Search’,'VARCHAR’ — replace Value_to_Search with actual value
rf_helpfindvalueall ’4′, ‘INT’
********************************************
/*
SUPER POWER SEARCH
Data Types accepted:
varchar, int, bit, datetime, nchar,text,ntext,money
Created by Roman Feldblum (MCDBA, MCSD, MCSA, MCP, CCA)
*/
create proc rf_helpfindvalueall
@value varchar(50),@columndatatype varchar(50)
WITH ENCRYPTION
as
declare @tablename varchar(100)
declare @towner varchar(100)
declare @columnname varchar(100)
declare @columntype varchar(100)
declare @columnvalue varchar(2000)
declare @sql varchar(1000)
declare @i int
create table #tt(TableName varchar(100),ColumnName varchar(100),Active int,ColumnValue varchar(2000))
set nocount on
DECLARE Validate_Cursor CURSOR FOR
SELECT su.name,o.name, c.name,t.name –,o.type
from sysobjects o inner join syscolumns c on o.id=c.id
inner join systypes t on t.xtype=c.xtype
inner join sysusers su on
su.uid=o.uid
where o.type=’U'– o.name like’t_%’
and
t.name=@columndatatype
order by o.name desc
if @columndatatype=’ntext’
begin
select @columndatatype=’text’
end
OPEN Validate_Cursor
FETCH NEXT FROM Validate_Cursor into @towner,@tablename,@columnname,@columntype
WHILE @@FETCH_STATUS = 0
BEGIN
———————————————
set nocount on
set @sql=N’insert #tt select ‘+ char(39)+@towner+’.’ + @tablename + char(39) +N’ as TableName,’+
char(39) + @columnname+ char(39)
+ case @columndatatype
when ‘text’ then
N’ as ColumnName, count(convert(varchar(8000),[' + @columnname
else
N' as ColumnName, count([' + @columnname
end
+
case @columndatatype
when 'bit' then
N']) as Active,convert(int,['+ @columnname + N']) as ColumnValue from ‘
when ‘text’ then
N’])) as Active,convert(varchar(8000),['+ @columnname + N']) as ColumnValue from ‘
else
N’]) as Active,convert(varchar(2000),['+ @columnname + N']) as ColumnValue from ‘
end
+ @towner + ‘.’ + quotename(@tablename) +
case @columndatatype
when ‘bit’ then
N’ where convert(int,[' + @columnname + N']) like ‘
when ‘text’ then
N’ where convert(varchar(8000),[' + @columnname + N']) like ‘
else
N’ where convert(varchar(1000),[' + @columnname + N']) like ‘
end
+ char(39)+N’%'+convert(varchar(1000),@value)+N’%'+char(39)
+
case @columndatatype
when ‘bit’ then
N’ GROUP BY convert(int,’
+ quotename(isnull(@columnname,0)) +’)’
when ‘text’ then
N’ GROUP BY convert(varchar(8000),’
+ quotename(isnull(@columnname,0)) +’)’
else
N’ GROUP BY ‘
+ quotename(@columnname)
end
–select @sql
exec (@sql)
if @@error<>0
begin
print @sql
end
FETCH NEXT FROM Validate_Cursor into @towner,@tablename,@columnname,@columntype
——————————————–
END
CLOSE Validate_Cursor
DEALLOCATE Validate_Cursor
print(‘========================================================================================================’)
SELECT count(distinct o.name) TotalScanedTables, count(c.name)TotalScanedColumns from sysobjects o inner join syscolumns c on o.id=c.id
inner join systypes t on t.xtype=c.xtype where o.type=’U’ and t.name=@columndatatype
print(‘========================================================================================================’)
select * from #tt
print(‘========================================================================================================’)
select Distinct
TableName,ColumnName,Active,ColumnValue
from #tt where ColumnValue=@value
drop table #tt