none
Consulta en SQL a varias bases de datos con un solo criterio.

    Pregunta

  • Hola,

    En el trabajo hay servidor que contiene varias bases de datos (15 aprox.)que se crean periódicamente (cada 3 días), contienen las mismas tablas. Mi problema es hacer una consulta que abarque a todas las bases de datos en busca de un mismo criterio y que me devuelva todas las coincidencias.

    Gracias de antemano.

    martes, 2 de mayo de 2017 18:55

Respuestas

  • Podrías hacer algo así como esto:

              Select loquesea from base1.dbo.LaTabla where criterio
    Union all Select loquesea from base2.dbo.LaTabla where criterio
    Union all Select loquesea from base3.dbo.LaTabla where criterio
    Union all Select loquesea from base4.dbo.LaTabla where criterio
    Union all Select loquesea from base5.dbo.LaTabla where criterio
    --etc
    
    

    Si los nombres de las bases de datos son cambiantes, esa sentencia puedes generarla como SQL dinámico, bien sea concatenando los nombres desde código cliente o bien haciendo lo mismo desde un script SQL.

    Por supuesto, admite variantes, por ejemplo podrías hacer primero un UNION de todas las tablas y luego aplicarle el WHERE al resultado. Tendrás que hacer algunas pruebas para ver cuál de las opciones tiene mejor rendimiento.

    martes, 2 de mayo de 2017 20:24

Todas las respuestas

  • Podrías hacer algo así como esto:

              Select loquesea from base1.dbo.LaTabla where criterio
    Union all Select loquesea from base2.dbo.LaTabla where criterio
    Union all Select loquesea from base3.dbo.LaTabla where criterio
    Union all Select loquesea from base4.dbo.LaTabla where criterio
    Union all Select loquesea from base5.dbo.LaTabla where criterio
    --etc
    
    

    Si los nombres de las bases de datos son cambiantes, esa sentencia puedes generarla como SQL dinámico, bien sea concatenando los nombres desde código cliente o bien haciendo lo mismo desde un script SQL.

    Por supuesto, admite variantes, por ejemplo podrías hacer primero un UNION de todas las tablas y luego aplicarle el WHERE al resultado. Tendrás que hacer algunas pruebas para ver cuál de las opciones tiene mejor rendimiento.

    martes, 2 de mayo de 2017 20:24
  • Gracias por la respuesta, funciona solo me queda probar la de mejor rendimiento. 
    miércoles, 3 de mayo de 2017 19:02