sys.sql_modules (Transact-SQL)

对每个 SQL 语言定义的模块对象都返回一行。类型为 P、RF、V、TR、FN、IF、TF 和 R 的对象均有关联的 SQL 模块。在此视图中,独立的默认值,即 D 类型的对象也具有 SQL 模块定义。有关这些类型的说明,请参阅 sys.objects 目录视图中的类型列。

列名

数据类型

说明

object_id

int

包含对象的对象的 ID。在数据库中是唯一的。

definition

nvarchar(max)

用于定义此模块的 SQL 文本。

NULL = 已加密。

uses_ansi_nulls

bit

模块是使用 SET ANSI_NULLS ON 创建的。

对于规则和默认值,始终 = 0。

uses_quoted_identifier

bit

模块是使用 SET QUOTED_IDENTIFIER ON 创建的。

is_schema_bound

bit

模块是使用 SCHEMABINDING 选项创建的。

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。

默认情况下或如果为 EXECUTE AS CALLER,则为 NULL。

如果为 EXECUTE AS SELF 或 EXECUTE AS <主体>,则为指定主体的 ID。

-2 = EXECUTE AS OWNER。

注释

DEFAULT 约束即 D 类型对象的 SQL 表达式位于 sys.default_constraints 目录视图中。CHECK 约束即 C 类型对象的 SQL 表达式位于 sys.check_constraints 目录视图中。

权限

在 SQL Server 2005 及更高版本中,目录视图中仅显示用户拥有的安全对象的元数据,或用户对其拥有某些权限的安全对象的元数据。有关详细信息,请参阅元数据可见性配置

示例

下面的示例返回了 AdventureWorks2008R2 数据库中每个模块的名称、类型和定义。

USE AdventureWorks2008R2;
GO
SELECT sm.object_id, OBJECT_NAME(sm.object_id) 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
ORDER BY o.type;
GO