Поделиться через


sys.sql_modules (Transact-SQL)

Область применения: SQL Server База данных SQL Azure Управляемый экземпляр SQL Azure конечной точке аналитики платформы Аналитики Azure Synapse Analytics (PDW)в Microsoft FabricХранилище в Microsoft Fabric

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

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

Column name Data type Description
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 EXECUTE AS Идентификатор субъекта базы данных.

NULL по умолчанию или если EXECUTE AS CALLER.
Идентификатор указанного субъекта, если 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 в противном случае. Он всегда содержит значение встроенных 1 табличных функций (TVFs) и 0 для всех других типов модулей.

Область применения: SQL Server 2019 (15.x) и более поздних версий.
inline_type bit Указывает, включена ли встраивание модуля в данный момент.
0 = встраивание отключено
1 = встраивание включено.
Для скалярных пользовательских функций (определяемых пользователем) значение имеет 1 значение, если встраивание включено (явно или неявно). Значение всегда предназначено 1 для встроенных табличных функций (TVFs) и 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];