sys.sql_modules (Transact-SQL)

S’applique à : SQL Server Azure SQL Database Azure SQL Managed Instance Azure Synapse Analytics Analytics Platform System (PDW) SQL analytics endpoint in Microsoft Fabric Warehouse in Microsoft Fabric

Retourne une ligne pour chaque objet qui est un module défini par le langage SQL dans SQL Server, y compris une fonction scalaire scalaire compilée en mode natif. Les objets de type P, RF, V, TR, FN, IF, TF et R possèdent un module SQL associé. Les valeurs par défaut autonomes, les objets de type D, ont également une définition de module SQL dans cette vue. Pour obtenir une description de ces types, consultez la colonne type dans l’affichage catalogue sys.objects.

Pour plus d’informations, consultez Fonctions scalaires définies par l’utilisateur pour l’OLTP en mémoire.

Nom de la colonne Type de données Description
object_id int ID d'objet de l'objet conteneur. Unique dans une base de données.
définition nvarchar(max) Texte SQL qui définit ce module. Cette valeur peut également être obtenue à l’aide de la fonction intégrée OBJECT_DEFINITION.

NULL = chiffré
uses_ansi_nulls bit Le module a été créé avec SET ANSI_NULLS ON.

Sera toujours = 0 pour les règles et les valeurs par défaut.
uses_quoted_identifier bit Le module a été créé avec SET QUOTED_IDENTIFIER ON.
is_schema_bound bit Module créé avec l'option SCHEMABINDING.

Contient toujours la valeur 1 pour les procédures stockées compilées en mode natif.
uses_database_collation bit 1 = La définition d'un module lié au schéma dépend du classement par défaut de la base de données pour une évaluation correcte ; dans tous les autres cas, 0. Une telle dépendance évite la modification du classement par défaut de la base de données.
is_recompiled bit Procédure créée avec l'option WITH RECOMPILE.
null_on_null_input bit Le module a été déclaré pour produire une sortie NULL sur n’importe quelle entrée NULL.
execute_as_principal_id Int ID du principal de base de données EXECUTE AS.

NULL par défaut ou dans le cas de l’instruction EXECUTE AS CALLER.

ID du principal spécifié si EXECUTE AS SELF ou EXECUTE AS <principal>.

-2 = EXECUTE AS OWNER.
uses_native_compilation bit S’applique à : SQL Server 2014 (12.x) à SQL Server 2014 (12.x).

0 = Non compilé en mode natif

1 = Compilé en mode natif

La valeur par défaut est 0.
is_inlineable bit S’applique à : SQL Server 2019 (15.x) et versions ultérieures.

Indique si le module est inlineable ou non. L’inlineabilité est basée sur les conditions spécifiées ici.

0 = n’est pas inlineable

1 = est inlineable.

Pour les fonctions scalaires définies par l’utilisateur (UDF), la valeur est 1 si la fonction UDF est inlineable, et 0 dans le cas contraire. Elle contient toujours la valeur 1 pour les fonctions table inline (TVF) et 0 pour tous les autres types de modules.
inline_type bit S’applique à : SQL Server 2019 (15.x) et versions ultérieures.

Indique si l’inlining est activé pour le module actuellement.

0 = l’inlining est désactivé

1 = l’inlining est activé.

Pour les fonctions scalaires définies par l’utilisateur (UDF), la valeur est 1 si l’inlining est activé (explicitement ou implicitement). La valeur sera toujours 1 pour les fonctions table inline (TVF) et 0 pour les autres types de module.

Notes

L’expression SQL pour une contrainte DEFAULT, objet de type D, se trouve dans l’affichage catalogue sys.default_constraints. L’expression SQL pour une contrainte CHECK, objet de type C, se trouve dans l’affichage catalogue sys.check_constraints.

Ces informations sont également décrites dans sys.dm_db_uncontained_entities (Transact-SQL).

Renommer une procédure stockée, une fonction, une vue ou un déclencheur ne modifiera pas le nom de l’objet correspondant dans la colonne de définition de la vue de catalogue sys.sql_modules ou la définition renvoyée par la fonction intégrée OBJECT_DEFINITION. Par conséquent, il est déconseillé d’utiliser sp_rename pour renommer ces types d’objet. Supprimez, puis recréez plutôt l'objet avec son nouveau nom. Pour en savoir plus, consultez sp_rename (Transact-SQL).

autorisations

La visibilité des métadonnées dans les affichages catalogue est limitée aux éléments sécurisables qu'un utilisateur détient ou pour lesquels des autorisations lui ont été accordées. Pour plus d'informations, consultez Metadata Visibility Configuration.

Exemples

L’exemple suivant retourne l’object_id, le nom de schéma, le nom d’objet, le type d’objet et la définition de chaque module dans la base de données actuelle.

SELECT 
          sm.object_id
        , ss.[name] as [schema]
        , o.[name] as object_name
        , o.[type]
        , o.[type_desc]
        , sm.[definition]  
FROM sys.sql_modules AS sm     
JOIN sys.objects AS o 
    ON sm.object_id = o.object_id  
JOIN sys.schemas AS ss
    ON o.schema_id = ss.schema_id  
ORDER BY 
      o.[type]
    , ss.[name]
    , o.[name];  

Voir aussi

Affichages catalogue (Transact-SQL)
Vues de catalogue d'objets (Transact-SQL)
Questions fréquentes sur l'interrogation des catalogues système de SQL Server
In-Memory OLTP (optimisation en mémoire)