none
Rastrear registro no Banco de Dados SQL Server 2005 RRS feed

  • Pergunta

  • Bom Dia Srs, 

    Existe a possibilidade de rastrear algum registro em varias tabelas ao mesmo tempo de um banco de dados ??

    Por exemplo: Tenho uma base de dados com 1500 tabelas e existe o mesmo registro que passa por todas as tabelas, como que eu faço pra reastrear isso ?
    Quais tabelas passa o registro "Bola" e quais são os campos ?
    quinta-feira, 5 de novembro de 2009 13:42

Respostas

  • E aí thiago,

    Olha, esse "registro" deve ter uma identificação (um ID). Seria necessário fazer uma busca pelas tabelas que contem essa coluna, e então realizar um SELECT.

    Vamos ver se esse exemplo lhe atende:

    -- tbl temporária q irá conter o resultado
    CREATE TABLE #Tabelas (Nome VARCHAR(255))
    go
    -- executa o select em cada tabela que tenha a coluna especificada (No exemplo uso a coluna "ID"
    -- buscando pelo valor 5
    INSERT INTO #Tabelas (Nome)
    EXEC sp_msforeachtable 'if exists (select 1 from sys.syscolumns where name = ''ID'' and id = object_id (''?''))
    EXEC (''select ''''?'''' from ? where ID = 5'')'
    go
    SELECT * FROM #Tabelas
    go
    DROP TABLE #Tabelas

    Olha, não sei qual é exatamente sua idéia sobre essa busca, mas terá que fazer algo nesse sentido.


    Abraço



    Classifiquem as respostas. O Fórum agradece!! This posting is provided "AS IS" with no warranties, and confers no rights.
    segunda-feira, 23 de novembro de 2009 16:54

Todas as Respostas

  • Thiago,

    Mas rastrear de qual forma?

    Se um determinado registro encontra-se em diversas tabelas?
    Pedro Antonio Galvão Junior - MVP - Windows Server System - SQL Server/Coordenador de Projetos/DBA
    quinta-feira, 5 de novembro de 2009 18:15
  • Isso Mesmo,

    eu tenho 500 tabelas e o mesmo registro viaja por essas tabelas, eu quero saber quais tabelas o registro passa.
    segunda-feira, 23 de novembro de 2009 16:39
  • Thiago,

    Você deseja saber por cada tabela que o registro passa?

    Isso seria para um registro específico?

    Se for poderíamos pensar em criar um trigger que verifica se é o registro, e armazena informações em uma table!!!!

    Mas particularmente não vejo como uma solução interessante.
    Pedro Antonio Galvão Junior - MVP - Windows Server System - SQL Server/Coordenador de Projetos/DBA
    segunda-feira, 23 de novembro de 2009 16:47
  • E aí thiago,

    Olha, esse "registro" deve ter uma identificação (um ID). Seria necessário fazer uma busca pelas tabelas que contem essa coluna, e então realizar um SELECT.

    Vamos ver se esse exemplo lhe atende:

    -- tbl temporária q irá conter o resultado
    CREATE TABLE #Tabelas (Nome VARCHAR(255))
    go
    -- executa o select em cada tabela que tenha a coluna especificada (No exemplo uso a coluna "ID"
    -- buscando pelo valor 5
    INSERT INTO #Tabelas (Nome)
    EXEC sp_msforeachtable 'if exists (select 1 from sys.syscolumns where name = ''ID'' and id = object_id (''?''))
    EXEC (''select ''''?'''' from ? where ID = 5'')'
    go
    SELECT * FROM #Tabelas
    go
    DROP TABLE #Tabelas

    Olha, não sei qual é exatamente sua idéia sobre essa busca, mas terá que fazer algo nesse sentido.


    Abraço



    Classifiquem as respostas. O Fórum agradece!! This posting is provided "AS IS" with no warranties, and confers no rights.
    segunda-feira, 23 de novembro de 2009 16:54
  • Muito legal vou testar aqui, mas a ideia principal é tipo um Mapeamento das Tabelas... 
    segunda-feira, 23 de novembro de 2009 17:03
  • Alexandre,

    Realmente utilizar o sp_msforeachtale é uma caminho interresante, mas ela poderá se tornar um grande vilão de processamento durante a leitura das tabelas.

    O que você acha?
    Pedro Antonio Galvão Junior - MVP - Windows Server System - SQL Server/Coordenador de Projetos/DBA
    terça-feira, 24 de novembro de 2009 12:11
  • Galvão,

    Foi muito modesto em chamar de "grande vilão"... pode ser um desastre, hehe... 

    Tem que tomar muito cuidado ao usar dessa forma.


    Vlw

    Classifiquem as respostas. O Fórum agradece!! This posting is provided "AS IS" with no warranties, and confers no rights.
    terça-feira, 24 de novembro de 2009 13:03
  • Alexandre,

    Que isso, foi um pequeno adjetivo.
    Pedro Antonio Galvão Junior - MVP - Windows Server System - SQL Server/Coordenador de Projetos/DBA
    terça-feira, 24 de novembro de 2009 16:44