SQL bir string değerin hangi tablonun tangi alanında geçtiğini bulma

Eğer bir string değerin hangi tablolarda ve bu tabloların hangi alanlarında geçtiğini ya da geçip geçmediğini bulmak istiyorsanız alın size ufak ama bir o kadar da YAVAŞ çalışacak bir query;

declare
@query nvarchar(4000),
@tbl_name sysname,
@tbl_id int,
@column_name sysname

declare cursor_tbl cursor for
select s.name+'.'+o.name name, object_id 
from sys.objects o (nolock)
join sys.schemas s (nolock) on o.schema_id=s.schema_id
where o.type = 'U'

declare @aranacaktext nvarchar(100)
Select @aranacaktext = N'Bulunacak string'

open cursor_tbl

fetch next from cursor_tbl into @tbl_name, @tbl_id

while (@@FETCH_STATUS = 0)
begin
    declare cursor_col cursor for 
    select name from sys.columns (nolock)
    where object_id = @tbl_id 
    and system_type_id in (167, 175, 231, 239)

    open cursor_col

    fetch next from cursor_col into @column_name
    while (@@FETCH_STATUS = 0)
    begin
        select @query = 'if exists 
        (select * from ' + @tbl_name + '(nolock) 
        where ['+ @column_name +'] like ''%'+@aranacaktext+'%'') 
        print ''' + @tbl_name + ', ' + @column_name + ''''
        exec (@query)

        fetch next from cursor_col into @column_name
    end
    close cursor_col
    deallocate cursor_col

    fetch next from cursor_tbl into @tbl_name, @tbl_id
end

close cursor_tbl
deallocate cursor_tbl