Sqlserver
 sql >> Base de Dados >  >> RDS >> Sqlserver

Diferença entre sys.views, sys.system_views e sys.all_views no SQL Server


Três das exibições do catálogo do sistema no SQL Server incluem sys.views , sys.system_views e sys.all_views .

Todas essas três exibições de catálogo fornecem metadados sobre exibições no banco de dados, mas há uma diferença sutil entre cada exibição.



Veja o que cada um faz:
sys.views
Retorna todas as visualizações definidas pelo usuário.
sys.system_views
Retorna todas as exibições do sistema enviadas com o SQL Server.
sys.all_views
Mostra todas as visualizações definidas pelo usuário e do sistema.

Em outras palavras, a última visualização combina os resultados das duas visualizações anteriores (ela retorna o sistema e visualizações definidas pelo usuário).

Exemplo


Aqui está um exemplo que demonstra a diferença nos resultados retornados por essas visualizações.
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)

Se somarmos os resultados das duas primeiras consultas, obteremos o mesmo resultado que sys.all_views :
USE Music;

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

Resultado:
+----------+
| Result   |
|----------|
| 497      |
+----------+