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

Forskellen mellem sys.sql_modules, sys.system_sql_modules og sys.all_sql_modules i SQL Server

I SQL Server er sys.sql_modules , sys.system_sql_modules , og sys.all_sql_modules systemkatalogvisninger returnerer metadata om SQL-sprogdefinerede moduler i SQL Server.

Der er dog forskel på dem.

Her er den officielle definition af hver visning:

sys.sql_modules
Returnerer en række for hvert objekt, der er et SQL-sprogdefineret modul i SQL Server, inklusive indbygget kompileret skalær brugerdefineret funktion. Objekter af typen P, RF, V, TR, FN, IF, TF og R har et tilknyttet SQL-modul. Stand-alone standarder, objekter af type D, har også en SQL-moduldefinition i denne visning.
sys.system_sql_modules
Returnerer én række pr. systemobjekt, der indeholder et SQL-sprogdefineret modul. Systemobjekter af typen FN, IF, P, PC, TF, V har et tilknyttet SQL-modul.
sys.all_sql_modules
Returnerer foreningen af ​​sys.sql_modules og sys.system_sql_modules .

Med andre ord, den sidste visning kombinerer resultaterne af de to foregående visninger (den returnerer både system og brugerdefinerede moduler).

Eksempel

Her er et eksempel, der viser forskellen i resultater, der returneres af disse visninger.

USE Music;

SELECT COUNT(*) AS sql_modules
FROM sys.sql_modules;

SELECT COUNT(*) AS system_sql_modules
FROM sys.system_sql_modules;

SELECT COUNT(*) AS all_sql_modules
FROM sys.all_sql_modules;

Resultat:

+---------------+
| sql_modules   |
|---------------|
| 9             |
+---------------+
(1 row affected)
+----------------------+
| system_sql_modules   |
|----------------------|
| 2020                 |
+----------------------+
(1 row affected)
+-------------------+
| all_sql_modules   |
|-------------------|
| 2029              |
+-------------------+
(1 row affected)

I dette tilfælde er der kun 9 brugerdefinerede moduler i denne database. Resten er fra systemmoduler.

Hvis vi lægger resultaterne af de to første forespørgsler sammen, får vi det samme resultat som sys.all_sql_modules :

SELECT 
(SELECT COUNT(*) FROM sys.sql_modules) +
(SELECT COUNT(*) FROM sys.system_sql_modules)
AS Result;

Resultat:

+----------+
| Result   |
|----------|
| 2029     |
+----------+

  1. Hibernate kunne ikke hente SequenceInformation fra databasen

  2. Bevarer ORDER BY i SELECT INTO

  3. Har problemer med at matche rækker i databasen ved hjælp af PDO

  4. hvad sker der i adoptionsfasen forberede