Supprimer tous les points de vue à partir de Sql Server
Par l'utilisation de cette instruction dans SQL Server:
EXEC sp_msforeachtable 'DROP TABLE ?'
Je sais que c'est possible de supprimer toutes les tables à la fois.
Est là une déclaration similaire pour les vues? J'ai essayé cette espérer avoir de la chance:
EXEC sp_msforeachview 'DROP VIEW ?", mais il ne fonctionne pas!
- Votre tenté EXEC sp_msforeachTABLE 'DROP VIEW ?' ?
Vous devez vous connecter pour publier un commentaire.
Vous avez ici, pas de curseur nécessaires:
DROP
est exécuté. Modifié pour prendre soin de schémas.Toutes les réponses ne prennent pas en compte des contraintes entre les points de vue. Ce script va prendre cela en compte:
Cette boucle à tous les points de vue et sélectionne le TOP 1 de la vue qui n'est pas présent dans les références systable.
Je voulais un script à la baisse liés à un schéma vues dans le bon ordre de dépendance, et je voulais qu'il marche sur sql azure où
sys.dm_sql_referencing_entities
n'est pas disponible. Je voulais aussi être en mesure de visualiser le sql en cours d'exécution avant que je le fait, couru, ce que vous ne pouvez pas le faire avec le script dans la réponse par @RicNet. J'ai donc écrit cette requête récursive qui utilisent les autres réponses ici comme une fondationEssayer ce script
Voir ici pour plus d'infos
Mais quel schéma?
Le script ci-dessous vous aidera si les points de vue font partie d'un schéma
Car aucun de le scripts, j'ai essayé de les réponses a fonctionné correctement dans le cas de plusieurs schémas je suis notamment un travail.
--DBNAME, PUT YOU OWN ONE
use SIPE_ISU
DECLARE @viewName varchar(500)
DECLARE cur CURSOR FOR SELECT sk.name + '.'+so.name FROM sys.objects so inner join sys.schemas sk on sk.schema_id = so.schema_id WHERE type = 'v'
OPEN cur
FETCH NEXT FROM cur INTO @viewName
WHILE @@fetch_status = 0
BEGIN
EXEC('DROP VIEW ' + @viewName)
FETCH NEXT FROM cur INTO @viewName
END
CLOSE cur
DEALLOCATE cur