sql >> Base de Datos >  >> RDS >> Sqlserver

Diferencia entre sys.views, sys.system_views y sys.all_views en SQL Server

Tres de las vistas del catálogo del sistema en SQL Server incluyen sys.views , sys.system_views y sys.all_views .

Estas tres vistas de catálogo proporcionan metadatos sobre las vistas en la base de datos, pero hay una sutil diferencia entre cada vista.

Esto es lo que hace cada uno:

sys.views
Devuelve todas las vistas definidas por el usuario.
sys.system_views
Devuelve todas las vistas del sistema enviadas con SQL Server.
sys.all_views
Muestra todas las vistas definidas por el usuario y del sistema.

En otras palabras, la última vista combina los resultados de las dos vistas anteriores (devuelve tanto el sistema y vistas definidas por el usuario).

Ejemplo

Este es un ejemplo que demuestra la diferencia en los resultados devueltos por estas vistas.

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;

Resultado:

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

Si sumamos los resultados de las dos primeras consultas, obtenemos el mismo resultado que sys.all_views :

USE Music;

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

Resultado:

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