Sqlserver
 sql >> Base de Dados >  >> RDS >> Sqlserver

Diferença entre sys.parameters, sys.system_parameters e sys.all_parameters no SQL Server


Se você estiver procurando por uma exibição de catálogo para retornar informações de parâmetro no SQL Server, poderá escolher. Em particular, você pode obter informações de parâmetros de sys.parameters , sys.system_parameters e sys.all_parameters .

No entanto, você provavelmente desejará usar apenas uma dessas visualizações, pois há diferenças entre elas.



Aqui está a definição oficial de cada visualização:
sys.parameters
Contém uma linha para cada parâmetro de um objeto que aceita parâmetros. Se o objeto for uma função escalar, também haverá uma única linha descrevendo o valor de retorno. Essa linha terá um valor de parameter_id de 0.
sys.system_parameters
Contém uma linha para cada objeto do sistema que possui parâmetros.
sys.all_parameters
Mostra a união de todos os parâmetros que pertencem a objetos definidos pelo usuário ou do sistema.

Em outras palavras, a última visualização combina os resultados das duas visualizações anteriores (ela retorna informações de parâmetros do sistema e objetos definidos pelo usuário).

Exemplo


Aqui está um exemplo que demonstra a diferença nos resultados retornados por essas visualizações.
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)

Nesse caso, existem apenas 7 parâmetros para objetos definidos pelo usuário neste banco de dados. O resto são de objetos do sistema.

Se somarmos os resultados das duas primeiras consultas, obteremos o mesmo resultado que sys.all_views :
SELECT 
(SELECT COUNT(*) FROM sys.parameters) +
(SELECT COUNT(*) FROM sys.system_parameters)
AS Result;

Resultado:
+----------+
| Result   |
|----------|
| 7449     |
+----------+