none
Como puedo eliminar todo las tablas de una base de datos? RRS feed

  • Pregunta

  • Tengo el siguiente código pero no me funciona:

    EXEC sp_MSForEachTable 'ALTER TABLE ? NOCHECK CONSTRAINT ALL';
    
    
    EXEC sp_MSforeachtable 'DROP TABLE ?';
    
    EXEC sp_MSForEachTable 'ALTER TABLE ? CHECK CONSTRAINT ALL';

    lunes, 3 de julio de 2017 15:26

Respuestas

  • Ese código te puede fallar por la integridad referencial o por vistas with schema binding.

    Si quieres borrar tablas pero no otro tipo de objetos como procediientos almacenados deberas

    * Opción 1. borrar en un orden adecuado, eso requiere o bien conocer la estructura o bien usar las tablas del sistema

    * Opción 2. Ejecutar ese script N veces hasta que deje de dar errores, si eso no pasa, borrar antes las vistas (porque alguna estará creada con schema binding)

    * Opción 3. En lugar de usar ese script. Abrir management studio, ver el explorador de objetos, situarse sobre las tablas, ver el detalle del explorador de objetos, seleccionar todas las tablas y pular borrar, y repetir el proceso hasta que no queden tablas.

    Para todos estos procesos necesitaras tener privilegios suficientes


    Comparte lo que sepas, aprende lo que no sepas (FGG)
    portalSQL
    El rincón del DBA

    • Propuesto como respuesta Joyce_ACModerator jueves, 13 de julio de 2017 14:06
    • Marcado como respuesta Moderador M martes, 25 de julio de 2017 15:12
    jueves, 13 de julio de 2017 6:37
    Moderador

Todas las respuestas

  • Hola.

    No encontré ese procedimiento almacenado de sistema en la documentación del producto, así que asumo que es uno de esos "no documentados". No podría decir como funciona dicho procedimiento almacenado de sistema...

    Sin embargo, si nos das algo de contexto sobre lo que quieres hacer, de pronto encontramos una manera "documentada" y soportada de realizarlo.

    Saludos,


    Guillermo Taylor F.
    MVP Data Platform & IT Pro
    Mi Blog

    miércoles, 5 de julio de 2017 21:00
  • Una pregunta muy tonta: Aparentemente, según el código que has puesto, lo que intentas hacer es deshabilitar los constraints de todas las tablas, luego borrar las tablas, y luego volver a habilitar los constraints de todas las tablas. ¿Por qué intentas habilitar los constraints de todas las tablas, si en ese momento ya no existe ninguna tabla?

    Aparte de eso, cuando preguntes en los foros, nunca digas "no me funciona". Siempre hay que explicar cuál es la forma en la que no funciona. ¿Se presenta algún mensaje de error? En ese caso, copiar en la pregunta el mensaje de error completo y exacto. ¿No sale un mensaje de error pero los resultados no son los esperados? En ese caso, detallar exactamente cuáles son los resultados observados (y compararlos con los que se esperaban, aunque en este caso son obvios). Y si es una operación en varias fases (como esta, que tiene tres llamadas a procedimientos), detallar lo anterior por cada fase, es decir, si dio error, en cuál de ellas fue, y si obtuvo resultados incorrectos, detallar paso a paso los resultados de cada operación. Solo así podrán ayudarte los usuarios del foro, que no tienen tu equipo delante para ver qué es lo que está sucediendo.

    jueves, 6 de julio de 2017 6:52
  • Hola David_Aponte:

    Creería que el "No me funciona" es por la tercera sentencia, ya que no tiene sentido habilitar nuevamente las constraint después de haber eliminado las tablas.

    Saludos cordiales...


    Camilo Villa

    miércoles, 12 de julio de 2017 19:59
  • Y POR QUE NO TE BORRAS LA BASE DE DATOS !! 

    Te sacas un back up de tus procedimientos almacenados ,vistas , etc y haces un  drop DATABASE....

    Y luego aplicas un back-up


    Pasa los puntos prro v:

    miércoles, 12 de julio de 2017 20:33
  • Ese código te puede fallar por la integridad referencial o por vistas with schema binding.

    Si quieres borrar tablas pero no otro tipo de objetos como procediientos almacenados deberas

    * Opción 1. borrar en un orden adecuado, eso requiere o bien conocer la estructura o bien usar las tablas del sistema

    * Opción 2. Ejecutar ese script N veces hasta que deje de dar errores, si eso no pasa, borrar antes las vistas (porque alguna estará creada con schema binding)

    * Opción 3. En lugar de usar ese script. Abrir management studio, ver el explorador de objetos, situarse sobre las tablas, ver el detalle del explorador de objetos, seleccionar todas las tablas y pular borrar, y repetir el proceso hasta que no queden tablas.

    Para todos estos procesos necesitaras tener privilegios suficientes


    Comparte lo que sepas, aprende lo que no sepas (FGG)
    portalSQL
    El rincón del DBA

    • Propuesto como respuesta Joyce_ACModerator jueves, 13 de julio de 2017 14:06
    • Marcado como respuesta Moderador M martes, 25 de julio de 2017 15:12
    jueves, 13 de julio de 2017 6:37
    Moderador