Comment supprimer toutes les lignes de toutes les tables d'une base de données SQL Server?
sql-server-2005
Michał Powaga
la source
la source
Réponses:
Notez que TRUNCATE ne fonctionnera pas si vous avez défini une intégrité référentielle.
Dans ce cas, cela fonctionnera:
la source
USE [MyDataBase]
:? L'idée ci-dessus fonctionnerait-elle, si elle était adaptée d'une manière ou d'une autre? ... Parce que je ne veux pas supprimer toutes les bases de données conservées par le serveur SQL.Dans mon projet récent, ma tâche consistait à nettoyer une base de données entière en utilisant une instruction SQL et chaque table ayant de nombreuses contraintes telles que la clé primaire et la clé étrangère. Il y a plus de 1000 tables dans la base de données, il n'est donc pas possible d'écrire une requête de suppression sur chaque table.
En utilisant une procédure stockée nommée sp_MSForEachTable qui nous permet de traiter facilement du code pour chaque table dans une seule base de données. Cela signifie qu'il est utilisé pour traiter une seule commande T-SQL ou différentes commandes T-SQL sur chaque table de la base de données.
Suivez donc les étapes ci-dessous pour tronquer toutes les tables d'une base de données SQL Server:
Étape 1 - Désactivez toutes les contraintes sur la base de données en utilisant la requête SQL ci-dessous:
EXEC sys.sp_msforeachtable 'ALTER TABLE ? NOCHECK CONSTRAINT ALL'
Étape 2 - Exécutez une opération Supprimer ou tronquer sur chaque table de la base de données en utilisant la commande sql ci-dessous:
Étape 3 - Activez toutes les contraintes sur la base de données en utilisant l'instruction SQL ci-dessous:
la source
sql server azure
?J'ai dû supprimer toutes les lignes et je l'ai fait avec le script suivant:
J'espère que cela t'aides!
la source
Voici une solution qui:
INFORMATION_SCHEMA.TABLES
pour une base de données particulièreSELECTS
tableaux basés sur certains critères de recherchesysdiagrams
et__RefactorLog
J'ai d'abord essayé
EXECUTE sp_MSforeachtable 'TRUNCATE TABLE ?'
, mais cela a supprimé mes diagrammes.la source
ALTER TABLE
bit pour désactiver les contraintes échoue.Dans mon cas, je devais activer QUOTED_IDENTIFIER. Cela a conduit à une légère modification de la réponse de Mark Rendle ci-dessus:
la source
DELETE failed because the following SET options have incorrect settings: 'QUOTED_IDENTIFIER'. Verify that SET options are correct for use with indexed views and/or indexes on computed columns and/or filtered indexes and/or query notifications and/or XML data type methods and/or spatial index operations.
la source
Vous pouvez supprimer toutes les lignes de toutes les tables en utilisant une approche comme celle suggérée par Rubens, ou vous pouvez simplement supprimer et recréer toutes les tables. Toujours une bonne idée d'avoir les scripts de création de base de données complets de toute façon afin que ce soit la méthode la plus simple / la plus rapide.
la source
Pour certaines exigences, nous devrons peut-être ignorer certaines tables. J'ai écrit le script ci-dessous pour ajouter des conditions supplémentaires pour filtrer la liste des tables. Le script ci-dessous affichera également le nombre de pré-suppression et de post-suppression.
la source
Cette réponse s'appuie sur la réponse de Zach Smith en réinitialisant également la colonne d'identité :
Voici la requête:
la source
la source
si vous souhaitez supprimer toute la table, vous devez suivre l'instruction SQL suivante
la source