Trzy widoki katalogu systemowego w SQL Server obejmują sys.views
, sys.system_views
i sys.all_views
.
Wszystkie te trzy widoki katalogu dostarczają metadane dotyczące widoków w bazie danych, ale istnieje subtelna różnica między każdym widokiem.
Oto, co każdy z nich robi:
sys.views
- Zwraca wszystkie widoki zdefiniowane przez użytkownika.
sys.system_views
- Zwraca wszystkie widoki systemowe dostarczone z SQL Server.
sys.all_views
- Pokazuje wszystkie widoki zdefiniowane przez użytkownika i systemowe.
Innymi słowy, ostatni widok łączy wyniki dwóch poprzednich widoków (zwraca zarówno systemowe i widoki zdefiniowane przez użytkownika).
Przykład
Oto przykład, który pokazuje różnicę w wynikach zwracanych przez te widoki.
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;
Wynik:
+----------------+ | User Defined | |----------------| | 3 | +----------------+ (1 row affected) +----------+ | System | |----------| | 494 | +----------+ (1 row affected) +-------------+ | All Views | |-------------| | 497 | +-------------+ (1 row affected)
Jeśli dodamy wyniki dwóch pierwszych zapytań razem, otrzymamy ten sam wynik, co sys.all_views
:
USE Music; SELECT (SELECT COUNT(*) FROM sys.views) + (SELECT COUNT(*) FROM sys.system_views) AS Result;
Wynik:
+----------+ | Result | |----------| | 497 | +----------+