Sqlserver
 sql >> Database >  >> RDS >> Sqlserver

Differenza tra sys.parameters, sys.system_parameters e sys.all_parameters in SQL ServerSQL Server

Se stai cercando una vista catalogo per restituire informazioni sui parametri in SQL Server, hai la possibilità di scegliere. In particolare, puoi ottenere informazioni sui parametri da sys.parameters , sys.system_parameters e sys.all_parameters .

Tuttavia, probabilmente vorrai utilizzare solo una di queste viste, poiché ci sono differenze tra loro.

Ecco la definizione ufficiale di ciascuna vista:

sys.parameters
Contiene una riga per ogni parametro di un oggetto che accetta parametri. Se l'oggetto è una funzione scalare, c'è anche una singola riga che descrive il valore restituito. Quella riga avrà un valore parameter_id pari a 0.
sys.system_parameters
Contiene una riga per ogni oggetto di sistema che ha parametri.
sys.all_parameters
Mostra l'unione di tutti i parametri che appartengono a oggetti definiti dall'utente o di sistema.

In altre parole, l'ultima vista combina i risultati delle due viste precedenti (restituisce le informazioni sui parametri sia dal sistema che oggetti definiti dall'utente).

Esempio

Ecco un esempio che dimostra la differenza nei risultati restituiti da queste visualizzazioni.

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;

Risultato:

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

In questo caso, ci sono solo 7 parametri per gli oggetti definiti dall'utente in questo database. Il resto proviene da oggetti di sistema.

Se aggiungiamo insieme i risultati delle prime due query, otteniamo lo stesso risultato di sys.all_views :

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

Risultato:

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