Dlaczego możesz upuścić widok programu SQL Server tylko w bieżącej bazie danych?

11

Właśnie to zauważyłem i trudno mi było znaleźć techniczny powód.

Tabele można upuszczać przy użyciu trzech nazw części, ale widoki są ograniczone do dwóch nazw części.

Jakie jest tego uzasadnienie?

IronicMuffin
źródło
1
To sięga przed podziałem z Sybase. Tam jest tak samo. DROP VIEWiDROP TABLE
Martin Smith

Odpowiedzi:

9

Dokumentacja jest na ten temat skąpa, jedynie stwierdzając (i udostępniając schemat składni), że istotna jest tylko aktualna baza danych.

Usuwa jeden lub więcej widoków z bieżącej bazy danych.

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

Ktoś biegły w debuggerze może ustalić, czy dzieje się tak z powodu ścieżki kodu, która jest trafiana tylko podczas upuszczania określonych typów obiektów, lub możesz poprosić kogoś z firmy Microsoft. Bez względu na powód i niezależnie od tego, czy znasz powód, nadal potrzebujesz tych samych obejść ... możesz to zrobić

USE your_database;
GO
DROP VIEW dbo.viewname;

Lub:

EXEC your_database.sys.sp_executesql N'DROP VIEW dbo.viewname;';
Aaron Bertrand
źródło