sql >> Base de Datos >  >> RDS >> Sqlserver

Diferencia entre sys.parameters, sys.system_parameters y sys.all_parameters en SQL Server

Si está buscando una vista de catálogo para devolver información de parámetros en SQL Server, tiene una opción. En particular, puede obtener información de parámetros de sys.parameters , sys.system_parameters y sys.all_parameters .

Sin embargo, probablemente solo desee utilizar una de estas vistas, ya que existen diferencias entre ellas.

Esta es la definición oficial de cada vista:

sys.parameters
Contiene una fila para cada parámetro de un objeto que acepta parámetros. Si el objeto es una función escalar, también hay una única fila que describe el valor de retorno. Esa fila tendrá un valor de parámetro_id de 0.
sys.system_parameters
Contiene una fila para cada objeto del sistema que tiene parámetros.
sys.all_parameters
Muestra la unión de todos los parámetros que pertenecen a objetos del sistema o definidos por el usuario.

En otras palabras, la última vista combina los resultados de las dos vistas anteriores (devuelve información de parámetros del sistema y objetos definidos por el usuario).

Ejemplo

Este es un ejemplo que demuestra la diferencia en los resultados devueltos por estas vistas.

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;

Resultado:

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

En este caso, solo hay 7 parámetros para objetos definidos por el usuario en esta base de datos. El resto son de objetos del sistema.

Si sumamos los resultados de las dos primeras consultas, obtenemos el mismo resultado que sys.all_views :

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

Resultado:

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