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