Tento článek představuje čtyři způsoby, jak vrátit seznam uživatelsky definovaných zobrazení v databázi SQL Server.
Pokud chcete vidět pouze systémová zobrazení nebo obojí, uživatelsky definované a systémová zobrazení, viz Rozdíl mezi sys.views, sys.system_views a sys.all_views na serveru SQL.
Možnost 1 – Zobrazení informačního schématu VIEWS
Můžete použít VIEWS
zobrazení informačního schématu pro získání seznamu všech uživatelsky definovaných zobrazení v databázi.
USE Music; SELECT TABLE_SCHEMA, TABLE_NAME FROM INFORMATION_SCHEMA.VIEWS;
Výsledek:
+----------------+--------------+ | TABLE_SCHEMA | TABLE_NAME | |----------------+--------------| | dbo | RockAlbums | | dbo | JazzAlbums | | dbo | BluesAlbums | +----------------+--------------+
Vrátit definici pohledu
INFORMATION_SCHEMA.VIEWS
pohled má také VIEW_DEFINITION
sloupec, takže v případě potřeby můžete snadno vrátit definici každého pohledu.
SELECT VIEW_DEFINITION FROM INFORMATION_SCHEMA.VIEWS;
Možnost 2 – Zobrazení systémového katalogu sys.views
Dalším způsobem, jak vrátit seznam pohledů, je dotaz na sys.views
zobrazení systémového katalogu.
USE Music; SELECT SCHEMA_NAME(schema_id) AS [Schema], Name FROM sys.views;
Výsledek:
+----------+-------------+ | Schema | Name | |----------+-------------| | dbo | RockAlbums | | dbo | JazzAlbums | | dbo | BluesAlbums | +----------+-------------+
Vrátit definici pohledu
sys.view
zobrazení neobsahuje sloupec pro definici objektu. Pokud chcete vrátit definici každého pohledu, můžete jej připojit pomocí sys.sql_modules
systémový pohled.
Příklad:
SELECT definition FROM sys.views v INNER JOIN sys.sql_modules m ON v.object_id = m.object_id;
Možnost 3 – Zobrazení systémového katalogu sys.objects
Dalším způsobem, jak vrátit seznam pohledů, je dotaz na sys.objects
zobrazení systémového katalogu.
SELECT SCHEMA_NAME(schema_id) AS [Schema], name FROM sys.objects WHERE type = 'V';
Výsledek:
+----------+-------------+ | Schema | name | |----------+-------------| | dbo | RockAlbums | | dbo | JazzAlbums | | dbo | BluesAlbums | +----------+-------------+
Typ V
je pro „Zobrazit“. Dalším způsobem, jak toho dosáhnout, je filtrovat podle type_desc
sloupec:
SELECT SCHEMA_NAME(schema_id) AS [Schema], name FROM sys.objects WHERE type_desc = 'VIEW';
Vrátit definici pohledu
Soubor sys.objects
zobrazení neobsahuje sloupec pro definici objektu. Pokud chcete vrátit definici každého pohledu, můžete jej připojit pomocí sys.sql_modules
systémový pohled.
Příklad:
SELECT definition FROM sys.objects o INNER JOIN sys.sql_modules m ON o.object_id = m.object_id WHERE type = 'V';
Možnost 4 – Uložená procedura sp_tables
sp_tables
uložená procedura vrátí seznam objektů, které lze v aktuálním prostředí dotazovat. To zahrnuje jakoukoli tabulku nebo pohled, kromě objektů synonym.
Výsledky můžete zúžit pouze na zobrazení pomocí @table_type
parametr. Můžete jej také zúžit pouze na daného vlastníka nebo katalog.
Spuštění následujícího kódu vrátí všechny pohledy v aktuální databázi – včetně systémových pohledů.
EXEC sp_tables @table_type = "'VIEW'";
Nebudu zde uvádět výsledky, protože je to dlouhý seznam.
Zde je to zúženo na daného vlastníka databáze:
EXEC sp_tables @table_owner = 'dbo', @table_type = "'VIEW'";
Výsledek:
+-------------------+---------------+--------------+--------------+-----------+ | TABLE_QUALIFIER | TABLE_OWNER | TABLE_NAME | TABLE_TYPE | REMARKS | |-------------------+---------------+--------------+--------------+-----------| | Music | dbo | BluesAlbums | VIEW | NULL | | Music | dbo | JazzAlbums | VIEW | NULL | | Music | dbo | RockAlbums | VIEW | NULL | +-------------------+---------------+--------------+--------------+-----------+