Comment puis-je supprimer tous les enregistrements de toutes les tables de ma base de données? Puis-je le faire avec une commande SQL ou j'ai besoin d'une commande SQL par table?
sql
sql-server
delete-row
multi-table-delete
AndreyAkinshin
la source
la source
EXEC sp_MSForEachTable 'DBCC CHECKIDENT(''?'', RESEED, 0)'
après le DELETE FROM pour réinitialiser toutes les colonnes d'identité à 0.DELETE failed because the following SET options have incorrect settings: 'QUOTED_IDENTIFIER'...
. Pour moi travaillé:EXEC sp_MSForEachTable 'SET QUOTED_IDENTIFIER ON; DELETE FROM ?'
Habituellement, je vais simplement utiliser le proc sp_MSForEachTable non documenté
Voir aussi: Supprimer toutes les données de la base de données (lorsque vous avez des FK)
la source
create database testing; GO use testing; create table t1 (i int primary key) create table t2(i int primary key,p int references t1)
la source
Je sais que c'est tard, mais je suis d'accord avec la suggestion d'AlexKuznetsov de scripter la base de données, plutôt que de passer par les tracas de purger les données des tables. Si la
TRUNCATE
solution ne fonctionne pas et que vous avez une grande quantité de données, l'émission d'DELETE
instructions (consignées) peut prendre du temps et vous vous retrouverez avec des identifiants qui n'ont pas été réensemencés (c'est-à-dire uneINSERT
instruction dans une table avec uneIDENTITY
colonne vous donnerait un ID de 50000 au lieu d'un ID de 1).Pour créer un script pour une base de données entière, dans SSMS, cliquez avec le bouton droit sur la base de données, puis sélectionnez
TASKS
->Generate scripts
:Cliquez
Next
pour ignorer l'écran d'ouverture de l'assistant, puis sélectionnez les objets que vous souhaitez script:Dans l'
Set scripting options
écran, vous pouvez choisir des paramètres pour le script, comme s'il faut générer 1 script pour tous les objets ou des scripts séparés pour les objets individuels, et s'il faut enregistrer le fichier au format Unicode ou ANSI:L'assistant affiche un résumé, que vous pouvez utiliser pour vérifier que tout est comme vous le souhaitez, et se ferme en cliquant sur «Terminer».
la source
Vous devrez d'abord désactiver tous les déclencheurs:
Exécutez ce script: (Tiré de ce post Merci @SQLMenace)
Ce script produira des
DELETE
instructions dans le bon ordre. à partir des tables référencées puis en référençant cellesCopiez les
DELETE FROM
instructions et exécutez-les une foisactiver les déclencheurs
Validez les modifications:
la source
Il est généralement beaucoup plus rapide d'exécuter un script de tous les objets de la base de données et d'en créer un vide, que de supprimer ou de tronquer les tables.
la source
Ci-dessous un script que j'ai utilisé pour supprimer toutes les données d'une base de données SQL Server
la source
la source
En guise de réponse alternative, si vous comparez Visual Studio SSDT ou éventuellement Red Gate Sql Compare, vous pouvez simplement exécuter une comparaison de schéma, l'écrire en script, supprimer l'ancienne base de données (éventuellement faire une sauvegarde en premier au cas où il y aurait une raison pour laquelle vous auriez besoin ces données), puis créez une nouvelle base de données avec le script créé par l'outil de comparaison. Alors que sur une très petite base de données cela peut être plus de travail, sur une très grande base de données, il sera beaucoup plus rapide de simplement supprimer la base de données puis de traiter les différents déclencheurs et contraintes qui peuvent être sur la base de données.
la source
Oui, il est possible de supprimer avec une seule ligne de code
la source