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 Keys
definida entre tablas, primero ejecute la consulta a continuación para deshabilitar todas lasforeign keys
presentes 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 @sql
antesexec
. Luego estoy ejecutando las declaraciones de caída construidas dinámicamente a través desp_executesql
Si 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
QUOTENAME
tambié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_NAME
columna y también incluiría laTABLE_SCHEMA
columna que encierra las tablas que no están en eldbo
esquema.O usando
sys
vistas 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
drop
todosconstraints
: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