Déposer tous les objets de base de données SQL Server qui appartiennent à différents schémas?
Est-il un moyen pour supprimer tous les objets dans une base de données, avec les objets appartenant à deux différents schémas?
J'avais déjà été à travailler avec un schéma, donc je demande tous les objets à l'aide de:
Select * From sysobjects Where type=...
puis abandonné tout ce que j'ai à l'aide de
Drop Table ...
Maintenant que j'ai introduit un autre schéma, chaque fois que j'essaie de la faire tomber, dit quelque chose à propos de je ne dispose pas de l'autorisation ou de l'objet n'existe pas. MAIS, si je le préfixe de l'objet avec le [schema.object]
il fonctionne. Je ne sais pas comment faire pour automatiser cela, car je ne sais pas quels sont les objets, ou des deux schémas de l'objet appartient. Quelqu'un sait comment faire pour supprimer tous les objets à l'intérieur de la base de données, indépendamment du schéma qui il appartient?
(L'utilisateur est propriétaire de deux schémas, les objets dans la base de données ont été créés par l'utilisateur, ainsi que l'utilisateur qui consiste à éliminer les objets qui fonctionne si le préfixe j'ai utilisé IE. Drop Table Schema1.blah
)
OriginalL'auteur Captain Alizee | 2013-09-07
Vous devez vous connecter pour publier un commentaire.
Utilisation
sys.les objets
en combinaison avecOBJECT_SCHEMA_NAME
pour construire votreDROP TABLE
consolidés, d'examiner, de copier/coller à exécuter:Ou de l'utilisation
sys.tables
pour éviter la nécessité de latype_desc
filtre:SQL Violon
sys.tables
vue au lieu de choisir à partir desys.objects
et d'avoir à fournir untype_desc
....Bon point, modifié pour inclure
sys.tables
C'est exactement ce que je cherchais, est-ce le même que sys.schémas à l'origine recommandés? Seul problème que j'ai rencontré, était que je voulais déposer tous les objets, et j'ai été capable de trouver toutes les sys.table sys.vew, etc. sauf pour les fonctions. Mais votre première suggestion a bien fonctionné pour cette.
OriginalL'auteur Bryan
Ni l'un ni l'autre des questions semblent avoir essayé de répondre à la tous les objets partie de la question.
Je suis étonné de voir que vous avez passer votre propre avec cela - je m'attendais à y avoir une chute de schéma bla cascade. Sûrement que chaque personne qui met en place un serveur de dev devrez le faire et d'avoir à faire un peu de meta-programmation avant d'être en mesure de faire normale de programmation est sérieusement horrible. De toute façon... coup de gueule!
J'ai commencé à regarder certains de ces articles comme un moyen de le faire par l'effacement d'un schéma: Il y a un l'ancien article à ce sujet, cependant les tableaux mentionnés sur il y a maintenant marqué comme obsolète. J'ai aussi regardé le documentation pour les nouvelles tables pour aider à comprendre ce qui se passe ici.
Il y a une autre réponse et un grande dynamique de la ressource sql des liens vers elle.
Après avoir regardé toutes ces choses pour un temps, tout m'a semblé un peu trop salissant.
Je pense que la meilleure option est d'aller pour
à la place. Le supplément de l'incantation, au sommet, fondamentalement, à force de supprimer la base de données comme mentionné ici
Il se sent un peu mal, mais le montant de la complexité impliquée dans la rédaction de la baisse de script est une bonne raison pour l'éviter je pense.
Si il semble y avoir des problèmes à la suppression de la base de données, je pourrais revenir sur quelques uns des liens et des post une autre réponse
ouais sentais un peu mal au début, mais je n'ai pas regardé en arrière depuis. Ce n'est pas une opération coûteuse pour arracher + créer de nouvelles bases de données dans sql server. Heureux de vous avoir aidé!
OriginalL'auteur JonnyRaa
Je ne sais pas qui version de Sql Server que vous utilisez, mais en supposant que c'est en 2008 ou plus tard, peut-être la commande suivante sera très utile (vérifiez que vous pouvez supprimer TOUTES les TABLES en une seule ligne):
Ce script sera execute DROP TABLE .... pour toutes les tables de la base de données DATABASE_NAME. Est très simple et fonctionne parfaitement. Cette commande peut être utilisée pour exécuter d'autres instructions sql, par exemple:
use
change la base de données, pas le schéma actuel (je ne suis même pas sûr qu'il y est le concept de schéma dans SQL Server)désolé de mon erreur, mon post a été corrigé. Merci.
OriginalL'auteur Gaston Flores
essayez-le avec les sql2012 ou au-dessus,
ce sera aider à supprimer tous les objets d'un schéma sélectionné
OriginalL'auteur Haseeb