适用于:SQL Server
Azure SQL 数据库
Azure SQL 托管实例
Azure Synapse Analytics
分析平台系统 (PDW)
Microsoft Fabric 中的 SQL 分析端点
Microsoft Fabric 中的仓库
为 SQL Server 中 SQL 语言定义的模块的每个对象返回一行,包括本机编译的标量用户定义函数。 类型P
、、、V
TR
、FN
、、IF
、以及TF
R
具有关联的 SQL 模块RF
的对象。 独立默认值(类型 D
对象)也在此视图中具有 SQL 模块定义。 有关这些类型的说明,请参阅 type
目录视图中的 列。
有关详细信息,请参阅内存中 OLTP 的标量用户定义函数。
Column name | Data type | Description |
---|---|---|
object_id |
int | 包含对象的对象 ID。 在数据库中是唯一的。 |
definition |
nvarchar(max) | 定义此模块的 SQL 文本。 也可以使用 OBJECT_DEFINITION 内置函数获取此值。NULL = 加密。 |
uses_ansi_nulls |
bit | 模块是使用 SET ANSI_NULLS ON ..始终 0 用于规则和默认值。 |
uses_quoted_identifier |
bit | 模块是使用 SET QUOTED_IDENTIFIER ON .. |
is_schema_bound |
bit | 模块是使用 SCHEMABINDING 选项创建的。始终包含本机编译存储过程的值 1 。 |
uses_database_collation |
bit |
1 = 架构绑定模块定义取决于数据库的默认排序规则,以便进行正确的评估;否则,为 0 . 此类依赖关系可防止更改数据库的默认排序规则。 |
is_recompiled |
bit | 过程已创建 WITH RECOMPILE 选项。 |
null_on_null_input |
bit | 模块被声明为针对任何 NULL 输入生成 NULL 输出。 |
execute_as_principal_id |
Int | 数据库主体的 EXECUTE AS ID。NULL 默认情况下或如果 EXECUTE AS CALLER 。指定主体的 ID(如果 EXECUTE AS SELF 为或 EXECUTE AS <principal> )。-2
=
EXECUTE AS OWNER 。 |
uses_native_compilation |
bit |
0 = 未本机编译1 = 本机编译默认值是 0 。适用于:SQL Server 2014 (12.x) 及更高版本。 |
is_inlineable |
bit | 指示模块是否可以内联。 内联性基于 要求中指定的条件。0 = 无法内联1 = 可以内联。对于标量用户定义函数(UDF),该值是 1 可以内联 UDF, 0 否则为值。 它始终包含内联表值函数(TVF)和0 所有其他模块类型的值1 。适用于:SQL Server 2019 (15.x) 及更高版本。 |
inline_type |
bit | 指示当前是否为模块启用内联。 0 = 关闭内联 1 = 启用内联。 对于标量用户定义函数(UDF),该值是 1 启用内联(显式或隐式)。 该值始终 1 用于内联表值函数(TVF)和其他 0 模块类型。适用于:SQL Server 2019 (15.x) 及更高版本。 |
Remarks
约束的 SQL 表达式 DEFAULT
(类型 D
对象)位于 sys.default_constraints 目录视图中。 约束的 SQL 表达式 CHECK
(类型 C
对象)位于 sys.check_constraints 目录视图中。
sys.dm_db_uncontained_entities中还介绍了此信息。
重命名存储过程、函数、视图或触发器不会更改目录视图的定义列中 sys.sql_modules
相应对象的名称或 由OBJECT_DEFINITION 内置函数返回的定义。 因此,建议不要用于 sp_rename
重命名这些对象类型。 请删除并重新创建具有新名称的对象。 在 sp_rename中了解详细信息。
Permissions
目录视图中仅显示用户拥有的安全对象的元数据,或用户对其拥有某些权限的安全对象的元数据。 有关详细信息,请参阅 Metadata Visibility Configuration。
Examples
下面的示例返回当前数据库中每个模块的 object_id、架构名称、对象名称、对象类型及定义。
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
INNER JOIN sys.objects AS o
ON sm.object_id = o.object_id
INNER JOIN sys.schemas AS ss
ON o.schema_id = ss.schema_id
ORDER BY o.[type], ss.[name], o.[name];