web-dev-qa-db-fra.com

Microsoft SQL Server Management Studio 2008 Suppression de plusieurs tables utilisateur

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

Je suis assez heureux pour supprimer tous tables d'utilisateur et réimporter les données nécessaires, mais ne peut toucher aucun des paramètres de sécurité de la base de données.

12
Ryaner

Toute raison de ne pas le faire directement dans T-SQL (avec DROP TABLE )? Ensuite, il s'agit simplement d'un cas de création du script SQL approprié (probablement autogénérant si vous avez une liste des tables dont vous avez besoin pour supprimer) et vous êtes absent.

2
Jon Skeet

Vous pouvez laisser tomber plusieurs tables en itérant à travers eux et en exécutant ceci:

EXEC sp_MSforeachtable @command1 = "DROP TABLE ?"

Cependant, si vous essayez de laisser tomber une table qui est 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 la déclaration à quelques reprises jusqu'à ce que les tables atteignent la référence (par exemple, si la table2 a une référence à la table1, puis à la première exécution de la table1 ne peut pas être supprimée, tandis que la table2 est tombée et à la seconde. Run Table1 peut alors être déposé puisque la table2 n'est plus).

0
Ole Lynge