Microsoft SQL Server Management Studio 2008 suppression de plusieurs tables d'utilisateurs

12

Existe-t-il un moyen simple de supprimer plusieurs tables dans la base de données sans supprimer la base de données et la recréer? Dans ce cas, nous avons plus de 100 à supprimer.

Je suis assez heureux de supprimer toutes les tables d'utilisateurs et de réimporter les données nécessaires, mais je ne peux toucher à aucun des paramètres de sécurité de la base de données.

Ryaner
la source

Réponses:

26

Dans l'explorateur d'objets, accédez à la base de données qui vous intéresse. Développez-la et cliquez sur le dossier Tables. Appuyez sur F7 pour afficher les détails de l'explorateur d'objets. Sélectionnez les tables que vous souhaitez supprimer et appuyez sur la touche Suppr.

GilaMonster
la source
qu'en est-il des contraintes?
Simon
2

Une raison de ne pas le faire directement en T-SQL (avec DROP TABLE)? Ensuite, il s'agit simplement de créer le script SQL approprié (très probablement de le générer automatiquement si vous avez une liste des tables que vous devez supprimer) et vous êtes absent.

Jon Skeet
la source
0

Tsql répond comme suggéré. Je n'ai pas pu faire fonctionner la table de baisse dans tsql mais cela a fait l'affaire.

declare @TABLE varchar(250)

declare select_cursor cursor for
select name from sysobjects where type='U'

open select_cursor

fetch next from select_cursor
into @TABLE

while @@FETCH_STATUS = 0
begin
    print 'DROP TABLE '+@TABLE

    fetch next from select_cursor
    into @TABLE
end

close select_cursor
deallocate select_cursor
Ryaner
la source
Cela suppose qu'aucune contrainte clé préalable n'est en place.
K. Brian Kelley,
Vous pouvez analyser les dépendances et supprimer les tables dans l'ordre avec un peu plus d'effort. La publication de stackoverflow sur <a href= stackoverflow.com/questions/352176/…> propose des solutions pour ce faire.
ConcernedOfTunbridgeWells
0

Vous pouvez supprimer plusieurs tables en les parcourant et en exécutant ceci:

EXEC sp_MSforeachtable @command1 = "DROP TABLE ?"

Cependant, si vous essayez de supprimer une table référencée par une clé étrangère, vous obtiendrez une erreur comme

Msg 3726, Level 16, State 1, Line 1
Could not drop object 'dbo.Table1' because it is referenced by a FOREIGN KEY constraint.

Si vous voulez simplement le faire manuellement, répétez simplement l'instruction plusieurs fois jusqu'à ce que les tables avec la référence soient supprimées (par exemple, si Table2 a une référence à Table1, alors à la première exécution, Table1 ne peut pas être supprimé pendant que Table2 est supprimé, et au second exécuter Table1 peut alors être abandonné puisque Table2 n'est plus).

Ole Lynge
la source