none
Select... RRS feed

  • Pergunta

  • Boa tarde!!!!!

    Estou com dúvidas, estou gravando blocos recebidos de uma central no Banco de Dados Sql Server salvo da seguinte maneira: crio as tabelas no banco de dados todos os dias conforme vou recebendo dados de uma central, esses dados são adicionado da seguinte maneira, no nome da tabela é criada com a data atual de cada dia ex:

    "CREATE TABLE SQL" + DateTime.Now.Date.ToString("yyyyMMdd") +

    " (hiscod int identity Primary Key, mensagem char(50),data char(12),hora char(12), cartao char(12))";

     

    Quero gerar relatório de tabelas criadas no Banco Dados de todos os dias, preciso fazer um select que verifique todas as tabelas do meu Banco de Dados GravaDadosSQL, fiz o select desta maneira:

    "SELECT hiscod, data, hora, cartao SUBSTRING(mensagem, 25, 6) as DataSaida, " +

    " FROM SQL"+DateTime.Today.Date.ToString("yyyyMMdd") +

    " cartao = '" + numcartao + "'";

     

    Mas eu não sei como fazer, para que este select passe por todas as tabelas do meu BD GravaDadosSQL, pois no FROM SQL"+DateTime.Today.Date.ToString("yyyyMMdd")  ele passa somente na tabela com a data de hoje, quero fazer um select que passe em todas as tabelas...

    Se algum puder me ajudar!!!!!!!!!!!!!!!!!

    Obrigada desde já....

    segunda-feira, 22 de dezembro de 2008 19:31

Respostas

  • Boa Noite Mary Sistemas,

     

    Seja bem vinda ao fórum MSDN. Nós participantes do fórum, teremos prazer em tentar ajudá-la com suas dúvidas e problemas através de nossa experiência, conhecimento e disponibilidade.

     

    Uma primeira observação é que você sempre procure o fórum mais correto para postar sua dúvida. Mesmo que ela envolva diferentes tecnologias como .NET e SQL Server. Certamente não será no "Conteúdo MSDN" que você encontrará a resposta. Talvez a parte de SQL Server ou ADO.NET seja mais eficaz (estou movendo o tópico para o fórum de SQL Server).

     

    Para verificar todas as tabelas existentes no SQL Server que iniciem com SQL. Use o SELECT abaixo:

     

    Code Snippet
    SELECT
    * FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME LIKE 'SQL%'

     

    Embora sua abordagem funcione, ela possui dois problemas graves.

     

    O primeiro é que você precisará conceder ao usuário da aplicação permissão para criar tabelas e normalmente esse tipo de permissão não é desejável. O que aconteceria se sua aplicação sofresse um ataque e o usuário pudesse criar uma infinidade de tabelas ?

     

    O segundo problema refere-se a combinar tabela para montar resultados. Como o nome da tabela tem o mesmo prefixo, mas diversas variações de sufixo, você terá que montar dinamicamente vários comandos para obter o SELECT final. Seria bem melhor se a tabela fosse sempre a mesma e houvesse uma coluna diferenciando o dia ao invés de criar uma tabela para cada dia.

     

    [ ]s,

     

    Gustavo

    segunda-feira, 22 de dezembro de 2008 21:27