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

Différence entre sys.views, sys.system_views et sys.all_views dans SQL Server

Trois des vues de catalogue système dans SQL Server incluent sys.views , sys.system_views , et sys.all_views .

Ces trois vues de catalogue fournissent toutes des métadonnées sur les vues de la base de données, mais il existe une différence subtile entre chaque vue.

Voici ce que chacun fait :

sys.views
Renvoie toutes les vues définies par l'utilisateur.
sys.system_views
Renvoie toutes les vues système livrées avec SQL Server.
sys.all_views
Affiche toutes les vues définies par l'utilisateur et système.

En d'autres termes, la dernière vue combine les résultats des deux vues précédentes (elle renvoie à la fois le système et vues définies par l'utilisateur).

Exemple

Voici un exemple qui illustre la différence dans les résultats renvoyés par ces vues.

USE Music;

SELECT COUNT(*) AS [User Defined]
FROM sys.views;

SELECT COUNT(*) AS [System]
FROM sys.system_views;

SELECT COUNT(*) AS [All Views]
FROM sys.all_views;

Résultat :

+----------------+
| User Defined   |
|----------------|
| 3              |
+----------------+
(1 row affected)
+----------+
| System   |
|----------|
| 494      |
+----------+
(1 row affected)
+-------------+
| All Views   |
|-------------|
| 497         |
+-------------+
(1 row affected)

Si nous additionnons les résultats des deux premières requêtes ensemble, nous obtenons le même résultat que sys.all_views :

USE Music;

SELECT 
(SELECT COUNT(*) FROM sys.views) +
(SELECT COUNT(*) FROM sys.system_views)
AS Result;

Résultat :

+----------+
| Result   |
|----------|
| 497      |
+----------+