In SQL Server i sys.sql_modules
, sys.system_sql_modules
e sys.all_sql_modules
le viste del catalogo di sistema restituiscono metadati sui moduli definiti dal linguaggio SQL in SQL Server.
Tuttavia, c'è una differenza tra loro.
Ecco la definizione ufficiale di ciascuna vista:
sys.sql_modules
- Restituisce una riga per ogni oggetto che è un modulo definito dal linguaggio SQL in SQL Server, inclusa la funzione scalare definita dall'utente compilata in modo nativo. Gli oggetti di tipo P, RF, V, TR, FN, IF, TF e R hanno un modulo SQL associato. I valori predefiniti autonomi, gli oggetti di tipo D, hanno anche una definizione di modulo SQL in questa vista.
sys.system_sql_modules
- Restituisce una riga per oggetto di sistema che contiene un modulo definito dal linguaggio SQL. Gli oggetti di sistema di tipo FN, IF, P, PC, TF, V hanno un modulo SQL associato.
sys.all_sql_modules
- Restituisce l'unione di
sys.sql_modules
esys.system_sql_modules
.
In altre parole, l'ultima vista combina i risultati delle due viste precedenti (restituisce sia il sistema che moduli definiti dall'utente).
Esempio
Ecco un esempio che dimostra la differenza nei risultati restituiti da queste visualizzazioni.
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;
Risultato:
+---------------+ | sql_modules | |---------------| | 9 | +---------------+ (1 row affected) +----------------------+ | system_sql_modules | |----------------------| | 2020 | +----------------------+ (1 row affected) +-------------------+ | all_sql_modules | |-------------------| | 2029 | +-------------------+ (1 row affected)
In questo caso, ci sono solo 9 moduli definiti dall'utente in questo database. Il resto proviene dai moduli di sistema.
Se aggiungiamo insieme i risultati delle prime due query, otteniamo lo stesso risultato di sys.all_sql_modules
:
SELECT (SELECT COUNT(*) FROM sys.sql_modules) + (SELECT COUNT(*) FROM sys.system_sql_modules) AS Result;
Risultato:
+----------+ | Result | |----------| | 2029 | +----------+