Sqlserver
 sql >> Database >  >> RDS >> Sqlserver

4 modi per elencare tutte le viste in un database di SQL Server

Questo articolo presenta quattro modi per restituire un elenco di visualizzazioni definite dall'utente in un database di SQL Server.

Se desideri visualizzare solo le viste di sistema o entrambe e definite dall'utente viste di sistema, vedi Differenza tra sys.views, sys.system_views e sys.all_views in SQL Server.

Opzione 1 – La vista dello schema delle informazioni VIEWS

Puoi usare le VIEWS vista schema di informazioni per ottenere un elenco di tutte le viste definite dall'utente in un database.

USE Music;
SELECT 
  TABLE_SCHEMA,
  TABLE_NAME
FROM INFORMATION_SCHEMA.VIEWS;

Risultato:

+----------------+--------------+
| TABLE_SCHEMA   | TABLE_NAME   |
|----------------+--------------|
| dbo            | RockAlbums   |
| dbo            | JazzAlbums   |
| dbo            | BluesAlbums  |
+----------------+--------------+

Restituisci la definizione della vista

Il INFORMATION_SCHEMA.VIEWS view ha anche un VIEW_DEFINITION colonna, in modo da poter restituire facilmente la definizione di ciascuna vista, se necessario.

SELECT VIEW_DEFINITION
FROM INFORMATION_SCHEMA.VIEWS;

Opzione 2:la vista del catalogo di sistema sys.views

Un altro modo per restituire un elenco di visualizzazioni è interrogare sys.views vista catalogo di sistema.

USE Music;
SELECT 
  SCHEMA_NAME(schema_id) AS [Schema],
  Name
FROM sys.views;

Risultato:

+----------+-------------+
| Schema   | Name        |
|----------+-------------|
| dbo      | RockAlbums  |
| dbo      | JazzAlbums  |
| dbo      | BluesAlbums |
+----------+-------------+

Restituisci la definizione della vista

Il sys.view view non include una colonna per la definizione dell'oggetto. Se vuoi restituire la definizione di ciascuna vista, puoi unirla con sys.sql_modules vista di sistema.

Esempio:

SELECT definition
FROM sys.views v
INNER JOIN sys.sql_modules m 
ON v.object_id = m.object_id;

Opzione 3 – La vista del catalogo di sistema sys.objects

Un altro modo per restituire un elenco di viste è interrogare sys.objects vista catalogo di sistema.

SELECT 
  SCHEMA_NAME(schema_id) AS [Schema],
  name
FROM sys.objects
WHERE type = 'V';

Risultato:

+----------+-------------+
| Schema   | name        |
|----------+-------------|
| dbo      | RockAlbums  |
| dbo      | JazzAlbums  |
| dbo      | BluesAlbums |
+----------+-------------+

Il tipo V sta per "Visualizza". Un altro modo per farlo è filtrare per type_desc colonna:

SELECT 
  SCHEMA_NAME(schema_id) AS [Schema],
  name
FROM sys.objects
WHERE type_desc = 'VIEW';

Restituisci la definizione della vista

Il sys.objects view non include una colonna per la definizione dell'oggetto. Se vuoi restituire la definizione di ciascuna vista, puoi unirla con sys.sql_modules vista di sistema.

Esempio:

SELECT definition
FROM sys.objects o
INNER JOIN sys.sql_modules m 
ON o.object_id = m.object_id
WHERE type = 'V';

Opzione 4 – La procedura memorizzata sp_tables

Le sp_tables stored procedure restituisce un elenco di oggetti che possono essere interrogati nell'ambiente corrente. Ciò include qualsiasi tabella o vista, ad eccezione degli oggetti sinonimo.

Puoi restringere i risultati alle sole visualizzazioni con @table_type parametro. Puoi anche restringere il campo a un determinato proprietario o catalogo.

L'esecuzione del codice seguente restituirà tutte le viste nel database corrente, incluse le viste di sistema.

EXEC sp_tables @table_type = "'VIEW'";

Non presenterò i risultati qui perché è un lungo elenco.

Qui è ristretto a un determinato proprietario del database:

EXEC sp_tables 
  @table_owner = 'dbo',
  @table_type = "'VIEW'";

Risultato:

+-------------------+---------------+--------------+--------------+-----------+
| TABLE_QUALIFIER   | TABLE_OWNER   | TABLE_NAME   | TABLE_TYPE   | REMARKS   |
|-------------------+---------------+--------------+--------------+-----------|
| Music             | dbo           | BluesAlbums  | VIEW         | NULL      |
| Music             | dbo           | JazzAlbums   | VIEW         | NULL      |
| Music             | dbo           | RockAlbums   | VIEW         | NULL      |
+-------------------+---------------+--------------+--------------+-----------+