No SQL Server, os
sys.sql_modules
, sys.system_sql_modules
e sys.all_sql_modules
as exibições do catálogo do sistema retornam metadados sobre módulos definidos pela linguagem SQL no SQL Server. No entanto, há uma diferença entre eles.
Aqui está a definição oficial de cada visualização:
sys.sql_modules
- Retorna uma linha para cada objeto que é um módulo definido pela linguagem SQL no SQL Server, incluindo a função escalar definida pelo usuário compilada nativamente. Objetos do tipo P, RF, V, TR, FN, IF, TF e R possuem um módulo SQL associado. Padrões autônomos, objetos do tipo D, também têm uma definição de módulo SQL nesta visualização.
sys.system_sql_modules
- Retorna uma linha por objeto do sistema que contém um módulo definido pela linguagem SQL. Objetos de sistema do tipo FN, IF, P, PC, TF, V possuem um módulo SQL associado.
sys.all_sql_modules
- Retorna a união de
sys.sql_modules
esys.system_sql_modules
.
Em outras palavras, a última visualização combina os resultados das duas visualizações anteriores (ela retorna o sistema e módulos 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 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;
Resultado:
+---------------+ | sql_modules | |---------------| | 9 | +---------------+ (1 row affected) +----------------------+ | system_sql_modules | |----------------------| | 2020 | +----------------------+ (1 row affected) +-------------------+ | all_sql_modules | |-------------------| | 2029 | +-------------------+ (1 row affected)
Neste caso, existem apenas 9 módulos definidos pelo usuário neste banco de dados. O resto são de módulos do sistema.
Se somarmos os resultados das duas primeiras consultas, obteremos o mesmo resultado que
sys.all_sql_modules
:SELECT (SELECT COUNT(*) FROM sys.sql_modules) + (SELECT COUNT(*) FROM sys.system_sql_modules) AS Result;
Resultado:
+----------+ | Result | |----------| | 2029 | +----------+