Warum können Sie nur eine SQL Server-Ansicht in der aktuellen Datenbank löschen?

11

Ich habe das gerade bemerkt und es fiel mir schwer, einen technischen Grund dafür zu finden.

Tabellen können mit drei Teilenamen gelöscht werden, Ansichten sind jedoch auf zwei Teilenamen beschränkt.

Was ist der Grund dafür?

IronicMuffin
quelle
1
Dies geht auf die Zeit vor der Trennung von Sybase zurück. Dort ist es genauso. DROP VIEWundDROP TABLE
Martin Smith

Antworten:

9

In der Dokumentation wird nur spärlich darauf hingewiesen, dass nur die aktuelle Datenbank relevant ist (und ein Syntaxdiagramm bereitstellt).

Entfernt eine oder mehrere Ansichten aus der aktuellen Datenbank.

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

Jemand, der den Debugger fließend beherrscht, kann feststellen, ob dies auf einen Codepfad zurückzuführen ist, der nur beim Löschen bestimmter Objekttypen getroffen wird, oder Sie können jemanden bei Microsoft fragen. Unabhängig vom Grund und ob Sie den Grund tatsächlich kennen oder nicht, benötigen Sie immer noch die gleichen Problemumgehungen ... die Sie tun können

USE your_database;
GO
DROP VIEW dbo.viewname;

Oder:

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