sys.sql_modules (Transact-SQL)

Область применения:yesSQL Server (все поддерживаемые версии) YesБаза данных SQL Azure YesУправляемый экземпляр SQL Azure yesAzure Synapse Analytics yesСистема платформы аналитики (PDW)

Возвращает строку для каждого объекта, который является определяемым языком SQL модулем в SQL Server, включая скомпилированную в собственном коде скалярную определяемую пользователем функцию. Объекты типа P, RF, V, TR, FN, IF, TF и R имеют сопоставленный с ними SQL модуль. Изолированные значения по умолчанию и объекты типа D в этом представлении также имеют определение SQL модуля. Описание этих типов см. в столбце type в представлении каталога sys.objects .

Дополнительные сведения см. в разделе Скалярные определяемые пользователем функции для выполняющейся в памяти OLTP.

Имя столбца Тип данных Описание
object_id int Идентификатор объекта, содержащего данный объект. Уникален в базе данных.
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 ID-идентификатор участника базы данных, указанного в инструкции EXECUTE AS.

NULL по умолчанию или значение EXECUTE AS CALLER.

Идентификатор указанного субъекта, если субъект EXECUTE AS SELF или EXECUTE AS<>.

-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 = является встроенным.

Для скалярных определяемых пользователем функций (UDF) значение будет равно 1, если определяемая пользователем функция является встроенной, и 0 в противном случае. Он всегда содержит значение 1 для встроенных функций с табличным значением (TVFs) и 0 для всех других типов модулей.
inline_type bit Область применения: SQL Server 2019 (15.x) и более поздних версий.

Указывает, включена ли встраивание для модуля в данный момент.

0 = встраивание отключено

1 = встраивание включено.

Для скалярных определяемых пользователем функций (UDF) значение будет равно 1, если встраивание включено (явно или неявно). Значение всегда будет равно 1 для встроенных функций с табличным значением (TVFs) и 0 для других типов модулей.

Remarks

Выражение 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 (оптимизация в памяти)