Sqlserver
 sql >> Base de données >  >> RDS >> Sqlserver

Différence entre sys.parameters, sys.system_parameters et sys.all_parameters dans SQL Server

Si vous recherchez une vue de catalogue pour renvoyer des informations sur les paramètres dans SQL Server, vous avez le choix. En particulier, vous pouvez obtenir des informations sur les paramètres de sys.parameters , sys.system_parameters , et sys.all_parameters .

Cependant, vous ne voudrez probablement utiliser qu'une seule de ces vues, car il existe des différences entre elles.

Voici la définition officielle de chaque vue :

sys.parameters
Contient une ligne pour chaque paramètre d'un objet qui accepte des paramètres. Si l'objet est une fonction scalaire, il y a aussi une seule ligne décrivant la valeur de retour. Cette ligne aura une valeur de parameter_id de 0.
sys.system_parameters
Contient une ligne pour chaque objet système qui a des paramètres.
sys.all_parameters
Affiche l'union de tous les paramètres qui appartiennent à des objets définis par l'utilisateur ou système.

En d'autres termes, la dernière vue combine les résultats des deux vues précédentes (elle renvoie des informations sur les paramètres du système et objets définis par l'utilisateur).

Exemple

Voici un exemple qui illustre la différence dans les résultats renvoyés par ces vues.

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;

Résultat :

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

Dans ce cas, il n'y a que 7 paramètres pour les objets définis par l'utilisateur dans cette base de données. Le reste provient d'objets système.

Si nous additionnons les résultats des deux premières requêtes ensemble, nous obtenons le même résultat que sys.all_views :

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

Résultat :

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