Sqlserver
 sql >> Datenbank >  >> RDS >> Sqlserver

Unterschied zwischen sys.views, sys.system_views und sys.all_views in SQL Server

Drei der Systemkatalogansichten in SQL Server enthalten sys.views , sys.system_views und sys.all_views .

Diese drei Katalogansichten stellen alle Metadaten zu Ansichten in der Datenbank bereit, aber es gibt einen kleinen Unterschied zwischen den Ansichten.

Hier ist, was jeder tut:

sys.views
Gibt alle benutzerdefinierten Ansichten zurück.
sys.system_views
Gibt alle mit SQL Server gelieferten Systemansichten zurück.
sys.all_views
Zeigt alle benutzerdefinierten und Systemansichten.

Mit anderen Worten, die letzte Ansicht kombiniert die Ergebnisse der beiden vorherigen Ansichten (sie gibt sowohl system als auch zurück benutzerdefinierte Ansichten).

Beispiel

Hier ist ein Beispiel, das den Unterschied in den Ergebnissen zeigt, die von diesen Ansichten zurückgegeben werden.

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;

Ergebnis:

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

Wenn wir die Ergebnisse der ersten beiden Abfragen addieren, erhalten wir das gleiche Ergebnis wie sys.all_views :

USE Music;

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

Ergebnis:

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