|
Publicité ' | |||||||||||||||||||||||
|
|
#1 | ||
|
Candidat au titre de Membre du Club
![]() Inscription : décembre 2011 Messages : 30 ![]() |
Bonjour,
Sous sql server 2008, je souhaite automatiser la suppression de certaines table ne commençant pas par 'SAVE' en SQL. Je souhaite tester si la suppression des 20 tables se passe bien si c'est le cas j'applique la suppression de toutes les tables sinon je souhaite qu'aucune table ne soient supprimées. Et je souhaite ne plus enregistrer dans une table les tables supprimées. A priori je pense utilisé TRY CATCH et MSforeachtabl. Mais je ne sais pas si la condition : l'ensemble des tables sont supprimé ou aucune si ça se passe mal est remplie. Je souhaite également que le code soit optimisé. J'ai fait rapisement le code suivant qui me parait très lourd. Si quelqu'un a une idée. Code :
|
||
|
|
00
|
|
|
#2 | ||||||
![]() ![]() ![]() Nicolas SouquetAdministrateur de base de données Inscription : janvier 2005 Messages : 4 674 ![]() |
Bonjour,
Il faut en fait savoir que l'on peut passer plusieurs noms d'objets à supprimer à une instruction DROP, et notamment à l'instruction DROP TABLE. Vous pouvez donc utiliser les vues de catalogue pour faire cela : Code :
Code :
Cela peut se faire sur le même principe que le SELECT juste au-dessus de ce paragraphe. Ne faites jamais un SELECT COUNT(*) pour connaître le nombre de lignes d'une table. Si vous êtes flemmard comme moi et que vous cherchez le nombre de lignes pour une table, utilisez sp_spaceused. Si vous cherchez le nombre de lignes de plusieurs tables, utilisez ce script Voici donc la procédure stockée : Code :
__________________
En bases de données relationnelles SQL, il n'y a ni tableaux, ni enregistrements, ni champs: il y a des tables, des lignes et des colonnes. Blog | Profil| Consulter ou télécharger les fichiers d'aide de SQL Server, des versions 2000 à 2012 |
||||||
|
10
|
|
|
#3 |
|
Candidat au titre de Membre du Club
![]() Inscription : décembre 2011 Messages : 30 ![]() |
Bonsoir et merci elsuket. je préfére effectivement passer par des fonctions sql que du dev.
- la fonction : DBCC UPDATEUSAGE (AdventureWorks2008R2). Est ce que je peux l'appliquer à toutes les bases de données en un seul script ? sp_MSForEachDb 'DBCC UPDATEUSAGE(?)' Est ce que je dois mettre WITH COUNT_ROWS ? pour le nombre de lignes ? |
|
|
00
|
|
|
#4 | |||||
![]() ![]() ![]() Nicolas SouquetAdministrateur de base de données Inscription : janvier 2005 Messages : 4 674 ![]() |
Citation:
Code :
Citation:
En tout cas ça fait plaisir de voir que vous avez lu la documentation, car peu de participants à ce forum le font Attention cependant, car si les bases de données utilisateur sont volumineuses, l'exécution de DBCC UPDATEUSAGE peut prendre longtemps. Dans ce cas je vous conseille de vous limiter à certaines tables. Je viens de m'apercevoir que je vous ai donné une coquille dans le code. J'ai mis partout : Alors que vous avez écrit : Citation:
Sinon il va y avoir dégâts ![]() @++
__________________
En bases de données relationnelles SQL, il n'y a ni tableaux, ni enregistrements, ni champs: il y a des tables, des lignes et des colonnes. Blog | Profil| Consulter ou télécharger les fichiers d'aide de SQL Server, des versions 2000 à 2012 |
|||||
|
10
|
Copyright © 2000-2012 - www.developpez.com