J'utilise Microsoft SQL Server 2008. Ma question est: comment supprimer plusieurs tables avec un préfixe commun dans une seule requête?
quelque chose comme ça les noms de table:
LG_001_01_STLINE,
LG_001_02_STFICHE
sql-server
sql-server-2008
drop-table
Violoncelle
la source
la source
J'ai exécuté cette requête, puis collé les résultats dans la fenêtre de requête pour supprimer toutes les tables:
Si vous souhaitez supprimer toutes les tables mais conserver celles dont le nom commence par A, B, C ou D:
la source
Cela vous permet de supprimer un nombre beaucoup plus grand de tables.
la source
J'aime celui que j'ai écrit:
la source
STATIC
et / ouLOCAL FAST_FORWARD
] ( sqlperformance.com/2012/09/t-sql-queries/cursor-options ). (3) Vous ne devez pas utiliser des vues obsolètes à compatibilité descendante commesysindexes
. (4) Votre script suppose que toutes les tables sont dans ledbo
schéma (ou pire, le schéma par défaut de l'utilisateur en cours d'exécution, qui peut ne pas l'êtredbo
).Cela peut être fait en utilisant
execute
comme suit:la source
dbo
, et 2) les noms ne peuvent jamais contenir un]
- qui peuvent tous deux être vrais dans le cas de l'OP mais ce serait quand même un bon idée de mentionner ces hypothèses, car les mises en garde qui en découlent pourraient ne pas être tout à fait évidentes pour les autres. Pourtant, comme je l'ai dit au début, mon principal problème avec cette réponse est qu'elle reformule simplement une suggestion déjà existante sans ajouter de nouvelle valeur.Exécutez la requête ci-dessus et enregistrez les résultats dans un fichier csv. Ouvrez ensuite ce fichier CSV dans un bloc-notes. Ensuite, faites Ctrl + H pour remplacer le schéma par DROP TABLE SCHEMA qui vous donnera toutes les requêtes de dépôt, copiez et collez ce grand sql dans votre outil sql et exécutez
si vos résultats sont
après le remplacement, cela ressemblera à ceci
la source
PRINT
déclaration. Comment votre réponse est-elle meilleure que la réponse la plus votée?