Sqlserver
 sql >> Base de données >  >> RDS >> Sqlserver

4 façons de répertorier toutes les vues dans une base de données SQL Server

Cet article présente quatre façons de renvoyer une liste de vues définies par l'utilisateur dans une base de données SQL Server.

Si vous voulez voir uniquement les vues système, ou à la fois et définies par l'utilisateur vues système, voir Différence entre sys.views, sys.system_views et sys.all_views dans SQL Server.

Option 1 - La vue du schéma d'informations VIEWS

Vous pouvez utiliser les VIEWS vue schéma d'information pour obtenir une liste de toutes les vues définies par l'utilisateur dans une base de données.

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

Résultat :

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

Renvoyer la définition de la vue

Le INFORMATION_SCHEMA.VIEWS la vue a également un VIEW_DEFINITION colonne, afin que vous puissiez facilement renvoyer la définition de chaque vue si nécessaire.

SELECT VIEW_DEFINITION
FROM INFORMATION_SCHEMA.VIEWS;

Option 2 - La vue du catalogue système sys.views

Une autre façon de renvoyer une liste de vues consiste à interroger le sys.views vue du catalogue système.

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

Résultat :

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

Renvoyer la définition de la vue

La sys.view La vue n'inclut pas de colonne pour la définition de l'objet. Si vous souhaitez renvoyer la définition de chaque vue, vous pouvez la joindre avec le sys.sql_modules vue système.

Exemple :

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

Option 3 - La vue du catalogue système sys.objects

Une autre façon de renvoyer une liste de vues consiste à interroger le sys.objects vue du catalogue système.

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

Résultat :

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

Le type V est pour "Afficher". Une autre façon de faire est de filtrer par le type_desc colonne :

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

Renvoyer la définition de la vue

Les sys.objects La vue n'inclut pas de colonne pour la définition de l'objet. Si vous souhaitez renvoyer la définition de chaque vue, vous pouvez la joindre avec le sys.sql_modules vue système.

Exemple :

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

Option 4 - La procédure stockée sp_tables

Les sp_tables procédure stockée renvoie une liste d'objets pouvant être interrogés dans l'environnement actuel. Cela inclut toutes les tables ou vues, à l'exception des objets synonymes.

Vous pouvez limiter les résultats aux seules vues avec le @table_type paramètre. Vous pouvez également le limiter à un propriétaire ou à un catalogue donné.

L'exécution du code suivant renverra toutes les vues de la base de données actuelle, y compris les vues système.

EXEC sp_tables @table_type = "'VIEW'";

Je ne présenterai pas les résultats ici car la liste est longue.

Ici, il est réduit à un propriétaire de base de données donné :

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

Résultat :

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