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