De modo geral, esse SQL só é adequado para uso em bancos de dados pequenos. O loop em ASP também é ineficiente. É melhor não usá-lo em bancos de dados grandes. Se for um banco de dados grande, entre em contato com o príncipe para solicitar outra instrução de consulta SQL escrita por um especialista. A função é: usar uma palavra-chave como índice, pesquisar em todo o banco de dados e depois retornar o nome da tabela e o nome da coluna onde essa palavra-chave está localizada. (É ótimo...especialmente quando você não consegue encontrar a tabela onde o nome de usuário e a senha estão localizados durante a invasão. Se você puder encontrar os campos diretamente digitando a palavra-chave admin...você não precisa olhar para cada tabela, uma por uma.) Então, com base nessa afirmação, escrevi um script asp para facilitar a pesquisa no banco de dados no futuro.
O código é o seguinte:
Copie o código do código da seguinte forma:
<%
'Confirme a posição de uma palavra-chave em um banco de dados (qual tabela e qual coluna)
'Por oldjun (http://www.oldjun.com)
'Baseado no sql de huangzi (http://www.2chuizi.com)
Servidor.ScriptTimeout=999999999
Resposta.Buffer = verdadeiro
Em caso de erro, retomar o próximo
palavra-chave=solicitação(palavra-chave)
se palavra-chave = então
response.write Precisa de palavra-chave!
resposta.Fim
Terminar se
conexão fraca
Definir conexão = Server.CreateObject(ADODB.Connection)
DimConnStr
'ConnectionString, por favor mude!
ConnStr=Driver={SQL SERVER};Servidor=localhost;UID=sa;PWD=sa;Banco de dados=mestre
Conn.open ConnStr
conn.execute(CREATE TABLE huangzi_table(id int identidade(1,1),biaoid int,biaoname nvarchar(1000)))
conn.execute(inserir huangzi_table selecione [id],[nome] de sysobjects onde xtype='U')
defina rs =conn.execute(selecione contagem(id) como tnum de huangzi_table)
tnum=rs(tnum)
rs.fechar
definir rs = nada
para i=1 para tnum
set rsbiao =conn.execute(selecione biaoid de huangzi_table onde id=&i&)
biaoid=rsbiao(biaoid)
set rst =conn.execute(selecione [biaoname] de huangzi_table onde biaoid=&biaoid&)
tname=rst(biaoname)
defina rsl=conn.execute(selecione count([nome]) como lnum de syscolumns onde id=&biaoid&)
lnum=rsl(lnum)
para j = 1 para lnum
número superior=j-1
defina rslie = conn.execute (selecione o primeiro [nome] de syscolumns onde id = & biaoid& e [nome] não estão em
(selecione top &topnum& [nome] em syscolumns onde id=&biaoid&))
nome_lie=rslie(nome)
defina rsresult = conn.execute (selecione o primeiro [&liename&] de [&tname&] onde CAST([&liename&] AS NVARCHAR(1000))='&keyword&')
se rsresult.bof ou rsresult.eof então
'response.write Nada-&tname&:&liename
'resposta.write <br>
outro
resultado=rsresultado(liename)
resposta.write resultado&(&tname&:&liename&)
resposta.write <br>
Terminar se
rslie.fechar
setrslie = nada
rsresultado.fechar
definir rsresult=nada
próximo
rsbiao.fechar
setrsbiao = nada
primeiro.fechar
setrst = nada
rsl.fechar
definir rsl = nada
próximo
conn.execute(DROP TABLE huangzi_table)
%>
Nota: A eficiência é muito baixa e pode ocorrer animação suspensa ao usá-la. É melhor não usar a biblioteca grande. O código é simples e implementa funções simples, sem conteúdo técnico. Há um problema de cache ao alterar a instrução de conexão. Recomenda-se reiniciar o navegador!