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

Differenza tra sys.views, sys.system_views e sys.all_views in SQL Server

Tre delle visualizzazioni del catalogo di sistema in SQL Server includono sys.views , sys.system_views e sys.all_views .

Queste tre viste del catalogo forniscono tutte metadati sulle viste nel database, ma c'è una sottile differenza tra ciascuna vista.

Ecco cosa fa ciascuno:

sys.views
Restituisce tutte le viste definite dall'utente.
sys.system_views
Restituisce tutte le viste di sistema fornite con SQL Server.
sys.all_views
Mostra tutte le viste definite dall'utente e di sistema.

In altre parole, l'ultima vista combina i risultati delle due viste precedenti (restituisce sia il sistema che viste definite dall'utente).

Esempio

Ecco un esempio che dimostra la differenza nei risultati restituiti da queste visualizzazioni.

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;

Risultato:

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

Se aggiungiamo insieme i risultati delle prime due query, otteniamo lo stesso risultato di sys.all_views :

USE Music;

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

Risultato:

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