Почему вы можете отбросить представление SQL Server только в текущей базе данных?

11

Просто заметил это и с трудом придумал техническую причину для этого.

Таблицы могут быть удалены с использованием трех имен частей, но представления ограничены двумя именами частей.

В чем причина этого?

IronicMuffin
источник
1
Это восходит к разделению с Sybase. Там то же самое. DROP VIEWиDROP TABLE
Мартин Смит

Ответы:

9

Документация скудна на этом, просто заявляя (и предоставляя синтаксическую диаграмму), что релевантна только текущая база данных.

Удаляет одно или несколько представлений из текущей базы данных.

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

Кто-то, свободно владеющий отладчиком, может определить, происходит ли это из-за пути кода, который используется только при отбрасывании определенных типов объектов, или вы можете спросить кого-то в Microsoft. Независимо от причины, и независимо от того, знаете ли вы причину, вам все равно нужны те же обходные пути ... вы можете сделать

USE your_database;
GO
DROP VIEW dbo.viewname;

Или же:

EXEC your_database.sys.sp_executesql N'DROP VIEW dbo.viewname;';
Аарон Бертран
источник