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

Unterschied zwischen sys.parameters, sys.system_parameters und sys.all_parameters in SQL Server

Wenn Sie nach einer Katalogansicht suchen, um Parameterinformationen in SQL Server zurückzugeben, haben Sie die Wahl. Insbesondere können Sie Parameterinformationen aus sys.parameters abrufen , sys.system_parameters und sys.all_parameters .

Wahrscheinlich möchten Sie jedoch nur eine dieser Ansichten verwenden, da es Unterschiede zwischen ihnen gibt.

Hier ist die offizielle Definition jeder Ansicht:

sys.parameters
Enthält eine Zeile für jeden Parameter eines Objekts, das Parameter akzeptiert. Wenn das Objekt eine Skalarfunktion ist, gibt es auch eine einzelne Zeile, die den Rückgabewert beschreibt. Diese Zeile hat einen parameter_id-Wert von 0.
sys.system_parameters
Enthält eine Zeile für jedes Systemobjekt mit Parametern.
sys.all_parameters
Zeigt die Vereinigung aller Parameter, die zu benutzerdefinierten oder Systemobjekten gehören.

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

Beispiel

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

USE Music;

SELECT COUNT(*) AS parameters
FROM sys.parameters;

SELECT COUNT(*) AS system_parameters
FROM sys.system_parameters;

SELECT COUNT(*) AS all_parameters
FROM sys.all_parameters;

Ergebnis:

+--------------+
| parameters   |
|--------------|
| 7            |
+--------------+
(1 row affected)
+---------------------+
| system_parameters   |
|---------------------|
| 7442                |
+---------------------+
(1 row affected)
+------------------+
| all_parameters   |
|------------------|
| 7449             |
+------------------+
(1 row affected)

In diesem Fall gibt es in dieser Datenbank nur 7 Parameter für benutzerdefinierte Objekte. Der Rest stammt von Systemobjekten.

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

SELECT 
(SELECT COUNT(*) FROM sys.parameters) +
(SELECT COUNT(*) FROM sys.system_parameters)
AS Result;

Ergebnis:

+----------+
| Result   |
|----------|
| 7449     |
+----------+