sys.sql_modules (Transact-SQL)

Se aplica a:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceAzure Synapse AnalyticsAnalytics Platform System (PDW)Punto de conexión de análisis SQL en Microsoft FabricAlmacenamiento en Microsoft Fabric

Devuelve una fila para cada objeto que es un módulo definido por el lenguaje SQL en SQL Server, lo que incluye la función escalar definida por el usuario compilada de forma nativa. Los objetos del tipo P, RF, V, TR, FN, IF, TF y R tienen un módulo SQL asociado. Los valores predeterminados independientes, objetos del tipo D, también incluyen una definición de módulo SQL en esta vista. Para obtener una descripción de estos tipos, consulte la columna type en la vista de catálogo sys.objects.

Para obtener más información, vea Funciones escalares definidas por el usuario para OLTP en memoria.

Nombre de la columna Tipo de datos Descripción
object_id int Id. de objeto del objeto contenedor. Es único en una base de datos.
definition nvarchar(max) Texto SQL que define este módulo. Este valor también se puede obtener mediante la función integrada OBJECT_DEFINITION.

NULL = Cifrado.
uses_ansi_nulls bit Módulo creado con SET ANSI_NULLS ON.

Siempre será = 0 para reglas y valores predeterminados.
uses_quoted_identifier bit Módulo creado con SET QUOTED_IDENTIFIER ON.
is_schema_bound bit El módulo se ha creado con la opción SCHEMABINDING.

Siempre contiene el valor 1 para los procedimientos almacenados generados de forma nativa.
uses_database_collation bit 1 = La definición del módulo enlazado a un esquema depende de la intercalación predeterminada de la base de datos para la evaluación correcta; en caso contrario, 0. Esta dependencia evita que se cambie la intercalación predeterminada de la base de datos.
is_recompiled bit El procedimiento se ha creado con la opción WITH RECOMPILE.
null_on_null_input bit Módulo declarado para generar una salida NULL en cualquier entrada NULL.
execute_as_principal_id Int Id. de la entidad de seguridad de base de datos EXECUTE AS.

NULL de manera predeterminada o si EXECUTE AS CALLER.

Identificador de la entidad de seguridad especificada si EXECUTE AS SELF o EXECUTE AS <entidad de seguridad>.

-2 = EXECUTE AS OWNER.
uses_native_compilation bit Se aplica a: desde SQL Server 2014 (12.x) hasta SQL Server 2014 R2 (12.x).

0 = no está compilado de forma nativa

1 = está compilado de forma nativa

El valor predeterminado es 0.
is_inlineable bit Válido para : SQL Server 2019 (15.x) y versiones posteriores.

Indica si el módulo se puede insertar, o no. La capacidad para su inserción se basa en las condiciones que se especifican aquí.

0 = no se puede insertar

1 = se puede insertar

En el caso de las funciones escalares definidas por el usuario (UDF), el valor será 1 si la UDF se puede insertar y 0 en caso contrario. Siempre contiene un valor de 1 para las funciones insertadas con valores de tabla (TVF) y 0 para todos los demás tipos de módulo.
inline_type bit Válido para : SQL Server 2019 (15.x) y versiones posteriores.

Indica si la inserción está activada actualmente para el módulo.

0 = la inserción está desactivada

1 = la inserción está activada

En el caso de las funciones escalares definidas por el usuario (UDF), el valor será 1 si la inserción está activada (explícita o implícitamente). El valor siempre será 1 en el caso de las funciones insertadas con valores de tabla (TVF) y 0 para otros tipos de módulo.

Observaciones

La expresión SQL de una restricción DEFAULT, objeto de tipo D, se encuentra en la vista de catálogo sys.default_constraints. La expresión SQL de una restricción CHECK, objeto de tipo C, se encuentra en la vista de catálogo sys.check_constraints.

Esta información también se describe en sys.dm_db_uncontained_entities (Transact-SQL).

Cambiar el nombre de un procedimiento almacenado, una función, una vista o un desencadenador no hará que cambie el nombre del objeto correspondiente en la columna de definición de la vista de catálogo sys.sql_modules ni la definición que devuelve la función integrada OBJECT_DEFINITION. Este es el motivo por el que se recomienda no utilizar sp_rename para cambiar el nombre a estos tipos de objetos. En su lugar, quite el objeto y vuelva a crearlo con su nuevo nombre. Obtenga más información en sp_rename (Transact-SQL).

Permisos

La visibilidad de los metadatos de las vistas de catálogo se limita a elementos protegibles que un usuario posee o en el que se concedió algún permiso al usuario. Para obtener más información, consulte Metadata Visibility Configuration.

Ejemplos

En el ejemplo siguiente se devuelve el identificador de objetos, el nombre del esquema, el nombre y tipo de objeto, y la definición de todos los módulos de la base de datos actual.

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];  

Consulte también

Vistas de catálogo (Transact-SQL)
Vistas de catálogo de objetos (Transact-SQL)
Consultar las preguntas más frecuentes (P+F) del catálogo del sistema de SQL Server
In-Memory OLTP (optimización In-Memory)