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