none
Buscar endereço de um dados em um banco. RRS feed

  • Pergunta

  • Vou tentar ser o mais sucinto possivel,

    Eu tenho um banco de dados que possui a configuração para enviar e-mail.. mas a senha do email mudou e eu não sei aonde esta esta configuração no banco... "vendas@comtecmed.com.br" . eu não sei aonde ele esta alocado, eu preciso alterar esta senha diretamente no banco de dados, mas não sei, qual a tabela.. coluna ele esta.. tem como localizar o endereço deste dado??

    Obs.. o programador legal colocou os dados da configuração da conta de e-mail direto no banco e não tenho como alterar pela minha aplicação.

    Esta cobrando uma baba de dinheiro para mudar isso....

    Obrigado pela ajuda.

    victor@comtecmed.com.br

    Victor Lima

    quarta-feira, 4 de dezembro de 2013 17:27

Respostas

  • Boa tarde,

    Não sei se entendi direito seu problema, mas vou tentar ajudar. 

    Com a query abaixo você consegue localizar colunas e tabelas fazendo um like pelo nome da coluna, talvez o nome da coluna tenha "email", aí você consegue localizar onde ela está.

    SELECT COL.[object_id], COL.name [COLUNA],
    TA.name [TABELA] 
    FROM sys.columns COL
    INNER JOIN SYS.TABLES TA ON TA.[OBJECT_ID] = COL.[OBJECT_ID]
    WHERE COL.NAME LIKE '%EMAIL%' .

    Espero que tenha ajudado, se não for isso que precisa talvez outros colegas possam ajudar.

    • Marcado como Resposta Giovani Cr quinta-feira, 12 de dezembro de 2013 10:43
    quarta-feira, 4 de dezembro de 2013 17:47
  • Deleted
    • Sugerido como Resposta Giovani Cr terça-feira, 10 de dezembro de 2013 13:28
    • Marcado como Resposta Giovani Cr quinta-feira, 12 de dezembro de 2013 10:43
    quarta-feira, 4 de dezembro de 2013 17:47
  • Victor,

         Eu utilizaria as tabelas sys.tables e sys.columns para criar um sql dinâmico e ir pesquisando tabela por tabela... Vai ser um trabalho razoável, mas voce vai encontrar o conteúdo... E ainda terá que se preocupar caso o desenvolvedor tenha criptografado o campo... 


    Roberto Fonseca MCT / MCITP - Database Administrator 2008 MCITP - Database Developer 2008 MCITP - Business Intelligence 2008

    • Marcado como Resposta Giovani Cr quinta-feira, 12 de dezembro de 2013 10:43
    quarta-feira, 4 de dezembro de 2013 18:23
    Moderador
  • Victor,

    Pesquisando um determinado dado em todas as colunas de um banco de dados.

    -- Parte 1: Verificando a existência das Tabelas --
    If Exists(Select Object_Id('Tabela1'))
     Begin 
      Drop Table Tabela1 
    
      CREATE TABLE Tabela1 
       (Coluna1 INT, 
        Coluna2 INT, 
        Coluna3 INT)
     End
     Else
      Begin
       CREATE TABLE Tabela1 
        (Coluna1 INT, 
         Coluna2 INT, 
         Coluna3 INT)
      End  
    
    If Exists(Select Object_Id('Tabela2'))
     Begin
      Drop Table Tabela2 
    
      CREATE TABLE Tabela2 
       (Coluna1 INT, 
        Coluna2 INT, 
        Coluna3 INT)
     End
     Else
      Begin
       CREATE TABLE Tabela2 
        (Coluna1 INT, 
         Coluna2 INT, 
         Coluna3 INT)
      End   
     
    If Exists(Select Object_Id('Tabela3'))
     Begin
      Drop Table Tabela3 
    
      CREATE TABLE Tabela3 
       (Coluna1 INT, 
        Coluna2 INT, 
        Coluna3 INT)
     End
      Else
      Begin
       CREATE TABLE Tabela3 
        (Coluna1 INT, 
         Coluna2 INT, 
         Coluna3 INT)
      End  
      
    -- Parte 2: Inserindo os registros --
    INSERT INTO Tabela1 VALUES (1, 2, 3)
    INSERT INTO Tabela1 VALUES (0, 7, 9)
    INSERT INTO Tabela1 VALUES (3, 4, 2)
    
    INSERT INTO Tabela2 VALUES (2, 2, 2)
    INSERT INTO Tabela2 VALUES (3, 9, 5)
    INSERT INTO Tabela2 VALUES (1, 6, 8)
    
    INSERT INTO Tabela3 VALUES (4, 0, 7)
    INSERT INTO Tabela3 VALUES (6, 5, 1)
    INSERT INTO Tabela3 VALUES (4, 7, 9) 
    
    -- Parte 3: Declarando as variáveis --
    DECLARE @Comando VARCHAR(1000), 
                    @ComandoTransact VARCHAR(100), 
                    @ValordePesquisa INT,
                    @TABLE_NAME VARCHAR(20), 
                    @Coluna_NAME VARCHAR(20)
    
    Set @Comando = '' 
    Set @TABLE_NAME = '' 
    Set @Coluna_NAME = ''
    
    Set @ComandoTransact = 'SELECT ''?'', ''^'', COUNT(*) AS TOTAL FROM ? WHERE ^ = @ UNION ALL' + CHAR(10)
    
    Set @ValordePesquisa = 3 -- Informe o valor a ser pesquisado no Mecanismo.
    
    -- Parte 4: Declarando o CursordePesquisa para retornar o nome da tabela e nome da Coluna --
    DECLARE CursordePesquisa CURSOR FAST_FORWARD
    FOR SELECT TABLE_NAME, Column_Name FROM INFORMATION_SCHEMA.Columns
    
    -- Abrindo o CursordePesquisa --
    OPEN CursordePesquisa
    FETCH NEXT FROM CursordePesquisa INTO @TABLE_NAME, @Coluna_NAME
    
    -- Parte 5: Iniciando o bloco condicional While --
    WHILE @@FETCH_STATUS = 0
     BEGIN
    
      SET @Comando = @Comando + REPLACE(REPLACE(REPLACE(@ComandoTransact,'?',@TABLE_NAME),'^',@Coluna_NAME),'@',@ValordePesquisa)
      FETCH NEXT FROM CursordePesquisa 
      INTO @TABLE_NAME, @Coluna_NAME
     END
    
    -- Parte 6: Realizando a Concatenação e União dos Selects --
    SET @Comando = LEFT(@Comando,LEN(@Comando)-LEN('UNION ALL')-2)
    
    -- Parte 7: Criando a Tabela Temporária para armazenar os Resultados --
    CREATE TABLE #Resultados 
     (NomeTabela Varchar(20), 
      NomeColuna VARCHAR(20), 
      TotaldeRegistros INT)
    
    -- Inserindo os dados na tabela Resultados com base na execução do @Comando --
    INSERT INTO #Resultados 
    Exec (@Comando)
    
    -- Encerrando o Cursor --
    CLOSE CursordePesquisa
    DEALLOCATE CursordePesquisa
    
    -- Apresentando os dados --
    SELECT * FROM #Resultados
    
    -- Excluíndo a Tabela Temporária Resultados --
    DROP TABLE #Resultados

    Pesquisando o mesmo nome de coluna em todas as tabelas de um banco de dados

    Create table #tabelas (Tabela varchar(800))
    Create table #Coluna (Coluna varchar(800))
    Create table #temp (Tabela varchar(800), Coluna varchar(800))
    
    -- Inserindo todas as tabelas que existem na base em uma temporaria
    insert into #tabelas
    select name from sys.sysobjects where xtype = 'U'
    
    -- Rodar daqui até o final
    declare @String varchar(100) 
    declare @tabela varchar(800)
    declare @coluna varchar(800)
    Declare @sql varchar(800)
    
    -- valor que voce quer encontrar
    set @String = 'Log'
    
    While (select COUNT(*) from #tabelas) > 0
    begin
    
    set @tabela = (select top 1 tabela from #tabelas)
    select @tabela
    insert into #Coluna
    select 
    	SC.name 
    		from sys.syscolumns as SC
    		inner join sys.sysobjects as SO on SC.id = SO.id
    where SO.name = @tabela
    
    set @coluna = (select top 1 Coluna from #Coluna)
    While (select count(*) from #Coluna) > 0
    begin
    set @coluna = (select top 1 Coluna from #Coluna)
    select @coluna
    set @sql = 'IF (select COUNT(*) from ' + @tabela + ' where ' + @coluna + ' like ' + char(39) + '%'+ @string + '%'+ char(39)  +') > 0
    begin
    insert into #temp
    select ' + Char(39) + @tabela + char(39) + ','+ Char(39) + @coluna + CHAR(39) +
    ' end'
    
    exec(@SQL)
    
    delete from #Coluna
    where Coluna = @coluna
    
    end
    
    delete from #tabelas
    where Tabela = @tabela
    
    end
    
    select * from #temp


    Pedro Antonio Galvão Junior [MVP | Microsoft Evangelist | Microsoft Partner | Engenheiro de Softwares | Especialista em Banco de Dados | SorBR.Net | Professor Universitário | MSIT.com]

    • Sugerido como Resposta Giovani Cr terça-feira, 10 de dezembro de 2013 13:28
    • Marcado como Resposta Giovani Cr quinta-feira, 12 de dezembro de 2013 10:43
    sexta-feira, 6 de dezembro de 2013 16:13

Todas as Respostas

  • Boa tarde,

    Não sei se entendi direito seu problema, mas vou tentar ajudar. 

    Com a query abaixo você consegue localizar colunas e tabelas fazendo um like pelo nome da coluna, talvez o nome da coluna tenha "email", aí você consegue localizar onde ela está.

    SELECT COL.[object_id], COL.name [COLUNA],
    TA.name [TABELA] 
    FROM sys.columns COL
    INNER JOIN SYS.TABLES TA ON TA.[OBJECT_ID] = COL.[OBJECT_ID]
    WHERE COL.NAME LIKE '%EMAIL%' .

    Espero que tenha ajudado, se não for isso que precisa talvez outros colegas possam ajudar.

    • Marcado como Resposta Giovani Cr quinta-feira, 12 de dezembro de 2013 10:43
    quarta-feira, 4 de dezembro de 2013 17:47
  • Deleted
    • Sugerido como Resposta Giovani Cr terça-feira, 10 de dezembro de 2013 13:28
    • Marcado como Resposta Giovani Cr quinta-feira, 12 de dezembro de 2013 10:43
    quarta-feira, 4 de dezembro de 2013 17:47
  • Victor,

         Eu utilizaria as tabelas sys.tables e sys.columns para criar um sql dinâmico e ir pesquisando tabela por tabela... Vai ser um trabalho razoável, mas voce vai encontrar o conteúdo... E ainda terá que se preocupar caso o desenvolvedor tenha criptografado o campo... 


    Roberto Fonseca MCT / MCITP - Database Administrator 2008 MCITP - Database Developer 2008 MCITP - Business Intelligence 2008

    • Marcado como Resposta Giovani Cr quinta-feira, 12 de dezembro de 2013 10:43
    quarta-feira, 4 de dezembro de 2013 18:23
    Moderador
  • Victor,

    Pesquisando um determinado dado em todas as colunas de um banco de dados.

    -- Parte 1: Verificando a existência das Tabelas --
    If Exists(Select Object_Id('Tabela1'))
     Begin 
      Drop Table Tabela1 
    
      CREATE TABLE Tabela1 
       (Coluna1 INT, 
        Coluna2 INT, 
        Coluna3 INT)
     End
     Else
      Begin
       CREATE TABLE Tabela1 
        (Coluna1 INT, 
         Coluna2 INT, 
         Coluna3 INT)
      End  
    
    If Exists(Select Object_Id('Tabela2'))
     Begin
      Drop Table Tabela2 
    
      CREATE TABLE Tabela2 
       (Coluna1 INT, 
        Coluna2 INT, 
        Coluna3 INT)
     End
     Else
      Begin
       CREATE TABLE Tabela2 
        (Coluna1 INT, 
         Coluna2 INT, 
         Coluna3 INT)
      End   
     
    If Exists(Select Object_Id('Tabela3'))
     Begin
      Drop Table Tabela3 
    
      CREATE TABLE Tabela3 
       (Coluna1 INT, 
        Coluna2 INT, 
        Coluna3 INT)
     End
      Else
      Begin
       CREATE TABLE Tabela3 
        (Coluna1 INT, 
         Coluna2 INT, 
         Coluna3 INT)
      End  
      
    -- Parte 2: Inserindo os registros --
    INSERT INTO Tabela1 VALUES (1, 2, 3)
    INSERT INTO Tabela1 VALUES (0, 7, 9)
    INSERT INTO Tabela1 VALUES (3, 4, 2)
    
    INSERT INTO Tabela2 VALUES (2, 2, 2)
    INSERT INTO Tabela2 VALUES (3, 9, 5)
    INSERT INTO Tabela2 VALUES (1, 6, 8)
    
    INSERT INTO Tabela3 VALUES (4, 0, 7)
    INSERT INTO Tabela3 VALUES (6, 5, 1)
    INSERT INTO Tabela3 VALUES (4, 7, 9) 
    
    -- Parte 3: Declarando as variáveis --
    DECLARE @Comando VARCHAR(1000), 
                    @ComandoTransact VARCHAR(100), 
                    @ValordePesquisa INT,
                    @TABLE_NAME VARCHAR(20), 
                    @Coluna_NAME VARCHAR(20)
    
    Set @Comando = '' 
    Set @TABLE_NAME = '' 
    Set @Coluna_NAME = ''
    
    Set @ComandoTransact = 'SELECT ''?'', ''^'', COUNT(*) AS TOTAL FROM ? WHERE ^ = @ UNION ALL' + CHAR(10)
    
    Set @ValordePesquisa = 3 -- Informe o valor a ser pesquisado no Mecanismo.
    
    -- Parte 4: Declarando o CursordePesquisa para retornar o nome da tabela e nome da Coluna --
    DECLARE CursordePesquisa CURSOR FAST_FORWARD
    FOR SELECT TABLE_NAME, Column_Name FROM INFORMATION_SCHEMA.Columns
    
    -- Abrindo o CursordePesquisa --
    OPEN CursordePesquisa
    FETCH NEXT FROM CursordePesquisa INTO @TABLE_NAME, @Coluna_NAME
    
    -- Parte 5: Iniciando o bloco condicional While --
    WHILE @@FETCH_STATUS = 0
     BEGIN
    
      SET @Comando = @Comando + REPLACE(REPLACE(REPLACE(@ComandoTransact,'?',@TABLE_NAME),'^',@Coluna_NAME),'@',@ValordePesquisa)
      FETCH NEXT FROM CursordePesquisa 
      INTO @TABLE_NAME, @Coluna_NAME
     END
    
    -- Parte 6: Realizando a Concatenação e União dos Selects --
    SET @Comando = LEFT(@Comando,LEN(@Comando)-LEN('UNION ALL')-2)
    
    -- Parte 7: Criando a Tabela Temporária para armazenar os Resultados --
    CREATE TABLE #Resultados 
     (NomeTabela Varchar(20), 
      NomeColuna VARCHAR(20), 
      TotaldeRegistros INT)
    
    -- Inserindo os dados na tabela Resultados com base na execução do @Comando --
    INSERT INTO #Resultados 
    Exec (@Comando)
    
    -- Encerrando o Cursor --
    CLOSE CursordePesquisa
    DEALLOCATE CursordePesquisa
    
    -- Apresentando os dados --
    SELECT * FROM #Resultados
    
    -- Excluíndo a Tabela Temporária Resultados --
    DROP TABLE #Resultados

    Pesquisando o mesmo nome de coluna em todas as tabelas de um banco de dados

    Create table #tabelas (Tabela varchar(800))
    Create table #Coluna (Coluna varchar(800))
    Create table #temp (Tabela varchar(800), Coluna varchar(800))
    
    -- Inserindo todas as tabelas que existem na base em uma temporaria
    insert into #tabelas
    select name from sys.sysobjects where xtype = 'U'
    
    -- Rodar daqui até o final
    declare @String varchar(100) 
    declare @tabela varchar(800)
    declare @coluna varchar(800)
    Declare @sql varchar(800)
    
    -- valor que voce quer encontrar
    set @String = 'Log'
    
    While (select COUNT(*) from #tabelas) > 0
    begin
    
    set @tabela = (select top 1 tabela from #tabelas)
    select @tabela
    insert into #Coluna
    select 
    	SC.name 
    		from sys.syscolumns as SC
    		inner join sys.sysobjects as SO on SC.id = SO.id
    where SO.name = @tabela
    
    set @coluna = (select top 1 Coluna from #Coluna)
    While (select count(*) from #Coluna) > 0
    begin
    set @coluna = (select top 1 Coluna from #Coluna)
    select @coluna
    set @sql = 'IF (select COUNT(*) from ' + @tabela + ' where ' + @coluna + ' like ' + char(39) + '%'+ @string + '%'+ char(39)  +') > 0
    begin
    insert into #temp
    select ' + Char(39) + @tabela + char(39) + ','+ Char(39) + @coluna + CHAR(39) +
    ' end'
    
    exec(@SQL)
    
    delete from #Coluna
    where Coluna = @coluna
    
    end
    
    delete from #tabelas
    where Tabela = @tabela
    
    end
    
    select * from #temp


    Pedro Antonio Galvão Junior [MVP | Microsoft Evangelist | Microsoft Partner | Engenheiro de Softwares | Especialista em Banco de Dados | SorBR.Net | Professor Universitário | MSIT.com]

    • Sugerido como Resposta Giovani Cr terça-feira, 10 de dezembro de 2013 13:28
    • Marcado como Resposta Giovani Cr quinta-feira, 12 de dezembro de 2013 10:43
    sexta-feira, 6 de dezembro de 2013 16:13