sql >> Databasteknik >  >> RDS >> Sqlserver

Skillnaden mellan sys.parameters, sys.system_parameters och sys.all_parameters i SQL Server

Om du letar efter en katalogvy för att returnera parameterinformation i SQL Server har du ett val. I synnerhet kan du få parameterinformation från sys.parameters , sys.system_parameters och sys.all_parameters .

Men du kommer förmodligen bara att vilja använda en av dessa vyer, eftersom det finns skillnader mellan dem.

Här är den officiella definitionen av varje vy:

sys.parameters
Innehåller en rad för varje parameter i ett objekt som accepterar parametrar. Om objektet är en skalär funktion finns det också en enda rad som beskriver returvärdet. Den raden kommer att ha ett parameter_id-värde på 0.
sys.system_parameters
Innehåller en rad för varje systemobjekt som har parametrar.
sys.all_parameters
Visar föreningen av alla parametrar som hör till användardefinierade eller systemobjekt.

Med andra ord, den sista vyn kombinerar resultaten från de två föregående vyn (den returnerar parameterinformation från både system och användardefinierade objekt).

Exempel

Här är ett exempel som visar skillnaden i resultat som returneras av dessa vyer.

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;

Resultat:

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

I det här fallet finns det bara 7 parametrar för användardefinierade objekt i denna databas. Resten är från systemobjekt.

Om vi ​​lägger ihop resultaten av de två första frågorna får vi samma resultat som sys.all_views :

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

Resultat:

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

  1. Kan inte öppna SQLite-databasen från SQLIte Helper Oncreate, när OnCreate utlöses genom att öppna databasen för första gången

  2. Hur ClusterControl konfigurerar virtuell IP och vad du kan förvänta dig under failover

  3. MySQL-prestanda:Hur man utnyttjar MySQL-databasindexering

  4. Prestandafördelar för SQL Server 2016 Enterprise Edition