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