In SQL Server de sys.sql_modules
, sys.system_sql_modules
, en sys.all_sql_modules
systeemcatalogusweergaven retourneren metagegevens over in SQL-taal gedefinieerde modules in SQL Server.
Er is echter een verschil tussen hen.
Hier is de officiële definitie van elke weergave:
sys.sql_modules
- Retourneert een rij voor elk object dat een SQL-taalgedefinieerde module in SQL Server is, inclusief native gecompileerde scalaire, door de gebruiker gedefinieerde functie. Objecten van het type P, RF, V, TR, FN, IF, TF en R hebben een bijbehorende SQL-module. Stand-alone standaarden, objecten van het type D, hebben ook een SQL-moduledefinitie in deze weergave.
sys.system_sql_modules
- Retourneert één rij per systeemobject dat een in de SQL-taal gedefinieerde module bevat. Systeemobjecten van het type FN, IF, P, PC, TF, V hebben een bijbehorende SQL-module.
sys.all_sql_modules
- Retourneert de unie van
sys.sql_modules
ensys.system_sql_modules
.
Met andere woorden, de laatste weergave combineert de resultaten van de vorige twee weergaven (het retourneert zowel systeem en door de gebruiker gedefinieerde modules).
Voorbeeld
Hier is een voorbeeld dat het verschil in resultaten van deze weergaven laat zien.
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;
Resultaat:
+---------------+ | sql_modules | |---------------| | 9 | +---------------+ (1 row affected) +----------------------+ | system_sql_modules | |----------------------| | 2020 | +----------------------+ (1 row affected) +-------------------+ | all_sql_modules | |-------------------| | 2029 | +-------------------+ (1 row affected)
In dit geval zijn er slechts 9 door de gebruiker gedefinieerde modules in deze database. De rest is van systeemmodules.
Als we de resultaten van de eerste twee queries bij elkaar optellen, krijgen we hetzelfde resultaat als sys.all_sql_modules
:
SELECT (SELECT COUNT(*) FROM sys.sql_modules) + (SELECT COUNT(*) FROM sys.system_sql_modules) AS Result;
Resultaat:
+----------+ | Result | |----------| | 2029 | +----------+