Bonjour,
Je voudrai purger toutes les tables de mon schéma DBO (~ 300 tables) avec requete T-SQL en une seule fois mais sans toucher aux autres objets.
Merci de vos lumières.
@+
Bonjour,
Je voudrai purger toutes les tables de mon schéma DBO (~ 300 tables) avec requete T-SQL en une seule fois mais sans toucher aux autres objets.
Merci de vos lumières.
@+
Bonjour,
Vous pouvez utiliser les vues d'information schéma pour générer dynamiquement la requête DROP pour chaque table de votre schéma dbo, puis exécuter la requête. Il faudra avant faire de même pour supprimer les éventuelles contraintes d'intégrité référentielles référençant les tables a supprimer.
(dans ce code, j'ai mis l’exécution en commentaires...)
EDIT : ATTENTION, ce script supprime les contraintes puis les tables
Cela pourrait toutefois ne pas être suffisant, si vous avez d'autres liens qui vous empêchent de supprimer les tables (par exemple des objets liés au schéma, et référençant une des tables à supprimer...)
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28 DECLARE @Schema VARCHAR(50) = 'disp_nominative' DECLARE @sql VARCHAR(MAX) = '' SELECT @sql += 'ALTER TABLE [' + FK.TABLE_SCHEMA + '].[' + FK.TABLE_NAME + '] DROP CONSTRAINT [' + FK.CONSTRAINT_NAME + ']; ' FROM INFORMATION_SCHEMA.REFERENTIAL_CONSTRAINTS RC INNER JOIN INFORMATION_SCHEMA.TABLE_CONSTRAINTS PK ON PK.CONSTRAINT_SCHEMA = RC.UNIQUE_CONSTRAINT_SCHEMA AND PK.CONSTRAINT_NAME = RC.UNIQUE_CONSTRAINT_NAME INNER JOIN INFORMATION_SCHEMA.TABLE_CONSTRAINTS FK ON FK.CONSTRAINT_SCHEMA = RC.CONSTRAINT_SCHEMA AND FK.CONSTRAINT_NAME = RC.CONSTRAINT_NAME WHERE PK.TABLE_SCHEMA = @Schema PRINT @sql --EXEC(@sql) SET @sql = '' SELECT @sql += 'DROP TABLE ['+ @Schema + '].[' + TABLE_NAME + ']; ' FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_TYPE = 'BASE TABLE' AND TABLE_SCHEMA = @Schema PRINT @sql --EXEC(@sql)
Est-ce pour une exécution occasionnelle ?
un "drop constraint" va supprimez les contraintes et vous ne pourrez plus les rétablir !
Il suffit de les désactiver avant DELETE puis les réactiver après.
A me lire : http://blog.developpez.com/sqlpro/p1...bles-dune-base
A +
Frédéric Brouard - SQLpro - ARCHITECTE DE DONNÉES - expert SGBDR et langage SQL
Le site sur les SGBD relationnels et le langage SQL: http://sqlpro.developpez.com/
Blog SQL, SQL Server, SGBDR : http://blog.developpez.com/sqlpro
Expert Microsoft SQL Server - M.V.P. (Most valuable Professional) MS Corp.
Entreprise SQL SPOT : modélisation, conseils, audit, optimisation, formation...
* * * * * Expertise SQL Server : http://mssqlserver.fr/ * * * * *
En effet, j'avais mal compris...
Je pensais que dari68 voulais supprimer les tables. ATTENTION, c'est d'ailleurs ce que fait mon script ! (si on décommente les EXEC).
c'est pas joli "trustées" !!!!
pourquoi pas crues ??? ;-)
A +
Frédéric Brouard - SQLpro - ARCHITECTE DE DONNÉES - expert SGBDR et langage SQL
Le site sur les SGBD relationnels et le langage SQL: http://sqlpro.developpez.com/
Blog SQL, SQL Server, SGBDR : http://blog.developpez.com/sqlpro
Expert Microsoft SQL Server - M.V.P. (Most valuable Professional) MS Corp.
Entreprise SQL SPOT : modélisation, conseils, audit, optimisation, formation...
* * * * * Expertise SQL Server : http://mssqlserver.fr/ * * * * *
Partager