Pourquoi ne pouvez-vous supprimer qu'une vue SQL Server dans la base de données actuelle?

11

Je viens de le remarquer et j'ai eu du mal à trouver une raison technique.

Les tables peuvent être supprimées à l'aide de trois noms de pièce, mais les vues sont limitées à deux noms de pièce.

Quel est le raisonnement derrière cela?

IronicMuffin
la source
1
Cela remonte à avant la séparation de Sybase. C'est la même chose là-bas. DROP VIEWetDROP TABLE
Martin Smith

Réponses:

9

La documentation est sommaire à ce sujet, indiquant simplement (et fournissant un diagramme de syntaxe) que seule la base de données actuelle est pertinente.

Supprime une ou plusieurs vues de la base de données actuelle.

DROP VIEW [ IF EXISTS ] [ schema_name . ] view_name [ ...,n ] [ ; ]  

Quelqu'un qui parle couramment le débogueur pourrait déterminer si cela est dû à un chemin de code qui n'est atteint que lors de la suppression de certains types d'objets, ou vous pouvez demander à quelqu'un chez Microsoft. Quelle que soit la raison, et que vous connaissiez ou non la raison, vous avez toujours besoin des mêmes solutions de contournement ... vous pouvez le faire

USE your_database;
GO
DROP VIEW dbo.viewname;

Ou:

EXEC your_database.sys.sp_executesql N'DROP VIEW dbo.viewname;';
Aaron Bertrand
la source