sys.sql_modules (Transact-SQL)
Применимо к:SQL Server
Azure SQL Database
Azure Sql Managed Instance
Azure Synapse Analytics Analytics
Platform System (PDW)
SQL Endpoint in Microsoft Fabric Warehouse in Microsoft Fabric
Возвращает строку для каждого объекта, определяемого языком SQL, в SQL Server, включая скомпилированную скалярную определяемую пользователем функцию. Объекты типа P, RF, V, TR, FN, IF, TF и R имеют сопоставленный с ними SQL модуль. Изолированные значения по умолчанию и объекты типа D в этом представлении также имеют определение SQL модуля. Описание этих типов см type
. в столбце в представлении каталога sys.objects .
Дополнительные сведения см. в разделе Скалярные определяемые пользователем функции для выполняющейся в памяти OLTP.
Имя столбца | Тип данных | Описание: |
---|---|---|
object_id | int | Идентификатор объекта, содержащего данный объект. Уникален в базе данных. |
Определение | 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 | ID-идентификатор участника базы данных, указанного в инструкции EXECUTE AS.NULL по умолчанию или значение EXECUTE AS CALLER.Идентификатор указанного субъекта, если EXECUTE AS SELF или EXECUTE AS <principal>. -2 = EXECUTE AS OWNER. |
uses_native_compilation | bit | Область применения: SQL Server 2014 (12.x) до SQL Server 2014 (12.x). 0 = не скомпилированы в собственном коде 1 = скомпилированы в собственном коде Значение по умолчанию равно 0. |
is_inlineable | bit | Область применения: SQL Server 2019 (15.x) и более поздних версий. Указывает, является ли модуль встроенным или нет. Встроенная возможность основана на условиях, указанных здесь. 0 = не является встроенным 1 = является встроенным. Для скалярных пользовательских функций (определяемых пользователем) значение будет равно 1, если UDF является встроенным и 0 в противном случае. Он всегда содержит значение 1 для встроенных табличных функций (TVFs) и 0 для всех других типов модулей. |
inline_type | bit | Область применения: SQL Server 2019 (15.x) и более поздних версий. Указывает, включена ли встраивание модуля в данный момент. 0 = встраивание отключено 1 = встраивание включено. Для скалярных пользовательских функций (ОПРЕДЕЛ) значение будет равно 1, если встраивание включено (явно или неявно). Значение всегда будет равно 1 для встроенных табличных функций (TVFs) и 0 для других типов модулей. |
Замечания
Выражение SQL для ограничения DEFAULT типа D находится в представлении каталога sys.default_constraints . Выражение SQL для ограничения CHECK типа C находится в представлении каталога sys.check_constraints .
Эти сведения также описаны в sys.dm_db_uncontained_entities (Transact-SQL).
Переименование хранимой процедуры, функции, представления или триггера не изменит имя соответствующего sys.sql_modules
объекта в столбце определения представления каталога или определения, возвращаемого встроенной функцией OBJECT_DEFINITION . По этой причине рекомендуется sp_rename
не использовать для переименования этих типов объектов. Лучше удалить и создать объект повторно с новым именем. Дополнительные сведения см. в sp_rename (Transact-SQL).
Разрешения
Видимость метаданных в представлениях каталогов ограничивается защищаемыми объектами, которыми пользователь владеет или на которые ему были предоставлены разрешения. Дополнительные сведения см. в разделе Metadata Visibility Configuration.
Примеры
В следующем примере возвращается 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
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];
См. также
Представления каталога (Transact-SQL)
Представления каталога объектов (Transact-SQL)
Часто задаваемые вопросы о запросах к системному каталогу SQL Server
In-Memory OLTP (оптимизация в памяти)