Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Boa noite,
Queria a ajuda de vocês. Tenho um banco de dados com mais de 500 tabelas. Nela tenho um dado gravado em uma tabela. Ou seja, sei o que está gravado, mas não sei qual tabela, nem coluna.
Existe algum query para fazer essa procura? sabendo a tabela e coluna, sei procurar com o LIKE, mas sem saber tabela e coluna, nao tenho a minima ideia.
Obrigado a todos antecipadamente!
>
Foi a semana da coluna perdida ? :)
Não, não sei fazer em Sql Server ...
Deve ter sido.
Vou postar o código, mas CUIDADO COM PERFORMANCE.
Eu o utilizo somente em casos extremos.
declare @idtabela int, @tabela varchar(max), @coluna varchar(max), @valorProcurado varchar(max) --Coloque aqui a palavra ou expressão que deseja procurarset @valorProcurado = '41936212000596' if OBJECT_ID('tempdb..#tmpFindString') is not nulldrop table #tmpFindString create table #tmpFindString (table_name varchar(255), string varchar(255)) DECLARE db_cursor CURSOR FOR select id from sys.sysobjects where xtype = 'u'OPEN db_cursor FETCH NEXT FROM db_cursor INTO @idtabela WHILE @@FETCH_STATUS = 0 BEGIN DECLARE db_cursorColunas CURSOR FOR select a.name as tabela, b.name as coluna from sys.sysobjects ainner joinsys.syscolumns bon a.id = b.id where /b.xtype in (167,175,231,239) and/ a.xtype = 'u'and a.id = @idtabela/167 varchar175 char231 nvarchar239 nchar/OPEN db_cursorColunas FETCH NEXT FROM db_cursorColunas INTO @tabela, @coluna WHILE @@FETCH_STATUS = 0 BEGIN exec('insert #tmpFindStringselect ''' + @tabela + ''', string = '''+@valorProcurado+'''from ' + @tabela + ' where ['+@coluna+'] like ''%'+@valorProcurado+'%''') FETCH NEXT FROM db_cursorColunas INTO @tabela, @coluna END CLOSE db_cursorColunas DEALLOCATE db_cursorColunas FETCH NEXT FROM db_cursor INTO @idtabela END CLOSE db_cursor DEALLOCATE db_cursor select distinct * from #tmpFindString
Em breve devo postar outros meios de buscas no meu blog.
[]´s
Tipo da busca que nem dá para falar em performance.
Algo como na mudança tenho 300 caixas e sei que o abridor de latas está numa delas mas não sei em qual.
>
Tipo da busca que nem dá para falar em performance.
Algo como na mudança tenho 300 caixas e sei que o abridor de latas está numa delas mas não sei em qual.
Nem pode-se considerar esta hipótese.
Utilizo Cursor, restrição por tipo. Se tentar monitorar, memoria estoura, leitura em disco vai pro teto do servidor, fora os ponteiros do banco que ficam perdidos.
Foi a semana da coluna perdida ? :)
Não, não sei fazer em Sql Server ...