sql >> Databáze >  >> RDS >> Sqlserver

4 způsoby, jak zobrazit seznam všech pohledů v databázi SQL Server

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      |
+-------------------+---------------+--------------+--------------+-----------+

  1. Existuje nějaký rozdíl mezi !=a <> v Oracle Sql?

  2. Vypočítejte MD5 hash řetězce UTF8

  3. PostgreSQL, drag and swap

  4. Práce s daty JDBC mimo ASCII v Talendu