¿Cómo puedo eliminar todos los registros de todas las tablas de mi base de datos? ¿Puedo hacerlo con un comando SQL o necesito un comando SQL por tabla?
sql
sql-server
delete-row
multi-table-delete
AndreyAkinshin
fuente
fuente
EXEC sp_MSForEachTable 'DBCC CHECKIDENT(''?'', RESEED, 0)'
después de DELETE FROM para restablecer todas las columnas de identidad a 0.DELETE failed because the following SET options have incorrect settings: 'QUOTED_IDENTIFIER'...
. Para mí trabajó:EXEC sp_MSForEachTable 'SET QUOTED_IDENTIFIER ON; DELETE FROM ?'
Por lo general, solo usaré el proceso indocumentado sp_MSForEachTable
Consulte también: Eliminar todos los datos en la base de datos (cuando tiene FK)
fuente
create database testing; GO use testing; create table t1 (i int primary key) create table t2(i int primary key,p int references t1)
fuente
Sé que es tarde, pero estoy de acuerdo con la sugerencia de AlexKuznetsov de crear un script para la base de datos, en lugar de pasar por la molestia de purgar los datos de las tablas. Si la
TRUNCATE
solución no funciona y resulta que tiene una gran cantidad de datos, la emisión deDELETE
declaraciones (registradas) puede llevar mucho tiempo, y quedará con identificadores que no se han reiniciado (es decir, unaINSERT
declaración en una tabla con unIDENTITY
columna le daría una identificación de 50000 en lugar de una identificación de 1).Para crear una secuencia de comandos de una base de datos completa, en SSMS, haga clic con el botón derecho en la base de datos, luego seleccione
TASKS
->Generate scripts
:Haga clic
Next
para omitir la pantalla de apertura del Asistente y luego seleccione qué objetos desea escribir:En la
Set scripting options
pantalla, puede elegir la configuración de las secuencias de comandos, como generar 1 secuencia de comandos para todos los objetos, o secuencias de comandos separadas para los objetos individuales, y si guardar el archivo en Unicode o ANSI:El asistente mostrará un resumen, que puede usar para verificar que todo esté como lo desea, y cerrar haciendo clic en 'Finalizar'.
fuente
Primero tendrás que deshabilitar todos los disparadores:
Ejecute este script: (Tomado de esta publicación Gracias @SQLMenace)
Este script producirá
DELETE
declaraciones en el orden correcto. a partir de tablas referenciadas y luego haciendo referencia a lasCopie las
DELETE FROM
declaraciones y ejecútelas una vezhabilitar disparadores
Cometer los cambios:
fuente
Por lo general, es mucho más rápido escribir todos los objetos en la base de datos y crear uno vacío, que eliminar o truncar tablas.
fuente
Debajo de un script que usé para eliminar todos los datos de una base de datos de SQL Server
fuente
fuente
Como respuesta alternativa, si visualiza SSDT de Visual Studio o posiblemente Red Gate Sql Compare, simplemente puede ejecutar una comparación de esquemas, escribir un script, descartar la base de datos anterior (posiblemente hacer una copia de seguridad primero en caso de que haya una razón por la que necesitará esos datos) y luego cree una nueva base de datos con el script creado por la herramienta de comparación. Mientras que en una base de datos muy pequeña esto puede ser más trabajo, en una base de datos muy grande será mucho más rápido simplemente soltar la base de datos y luego lidiar con los diferentes desencadenantes y restricciones que pueden estar en la base de datos.
fuente
Sí, es posible eliminar con una sola línea de código.
fuente