No quiero escribir el nombre de todas las tablas para descartarlas todas. ¿Es posible con una consulta?
sql
sql-server
Majid
fuente
fuente

Respuestas:
Use la vista INFORMATION_SCHEMA.TABLES para obtener la lista de tablas. Genere scripts de caída en la instrucción select y suéltelos usando SQL dinámico:
Sys.Tables Version
Nota: Si tiene alguna
foreign Keysdefinida entre tablas, primero ejecute la consulta a continuación para deshabilitar todas lasforeign keyspresentes en su base de datos.Para más información, consulte aquí .
fuente
[sys]vistas de esquema si no se requiere portabilidad entre rdbms '. stackoverflow.com/a/3654313/251174Print @sqlantesexec. Luego estoy ejecutando las declaraciones de caída construidas dinámicamente a través desp_executesqlSi desea usar solo una consulta SQL para eliminar todas las tablas, puede usar esto:
Este es un procedimiento almacenado oculto en el servidor sql, y se ejecutará para cada tabla en la base de datos a la que esté conectado.
Nota: es posible que deba ejecutar la consulta varias veces para eliminar todas las tablas debido a dependencias.
Nota 2: Para evitar la primera nota, antes de ejecutar la consulta, primero verifique si hay relaciones de claves foráneas con alguna tabla. Si hay, simplemente deshabilite la restricción de clave externa ejecutando la consulta a continuación:
fuente
Si no desea escribir, puede crear las declaraciones con esto:
Luego copie y pegue en una nueva ventana SSMS para ejecutarlo.
fuente
QUOTENAMEtambién lo que se ve bien.'DROP TABLE ' + QUOTENAME(name) + ';'También puede usar el siguiente script para descartar todo, incluido lo siguiente:
https://michaelreichenbach.de/how-to-drop-everything-in-a-mssql-database/
fuente
Simplemente haría un pequeño cambio en la respuesta y el uso de @ NoDisplayName
QUOTENAME()en laTABLE_NAMEcolumna y también incluiría laTABLE_SCHEMAcolumna que encierra las tablas que no están en eldboesquema.O usando
sysvistas de esquema (según el comentario de @ swasheck):fuente
[sys]vistas de esquema si no se requiere portabilidad a través de rdbms '. stackoverflow.com/a/3654313/251174Como seguimiento a la respuesta de Dave.Gugg, este sería el código que alguien necesitaría para obtener todas las líneas DROP TABLE en MySQL:
fuente
La forma más sencilla es soltar toda la base de datos y volver a crearla:
Eso es todo.
fuente
Si alguien más tuvo un problema con la solución de la mejor respuesta (incluida la desactivación de claves externas), aquí hay otra solución mía :
fuente
No exactamente 1 consulta, aún bastante corta y dulce:
fuente
Use el siguiente script para
droptodosconstraints:Luego ejecute lo siguiente para descartar todas las tablas:
¡Esto funcionó para mí en Azure SQL Database donde
'sp_msforeachtable'no estaba disponible!fuente
Sé que esta pregunta es muy antigua, pero cada vez que necesito este código ... por cierto, si tiene tablas y vistas y Funciones y PROCEDIMIENTOS, puede eliminarlo todo con este Script ... entonces, ¿por qué publico este Script? porque si eliminas todas las tablas deberás eliminar todas las vistas y si tienes Funciones y PROCEDIMIENTOS también debes eliminarlo,
espero que ayude a alguien
fuente