共用方式為


sys.sql_modules(Transact-SQL)

適用於:SQL ServerAzure SQL 資料庫Azure SQL 受控執行個體Azure Synapse Analytics分析平台系統(PDW)Microsoft Fabric 中的 SQL 分析端點Microsoft Fabric 中的倉儲Microsoft Fabric 中的 SQL 資料庫

針對 SQL Server 中 SQL 語言定義的模組的每個物件,傳回一個數據列,包括原生編譯的純量使用者定義函數。 P RF V TR、、、、、 FNIF 類型的TF物件具有相關聯的 SQL 模組。 R 獨立預設值,類型 D的物件,在此檢視中也有 SQL 模組定義。 如需這些類型的描述,請參閱 type sys.objects 目錄檢視中的數據行。

如需詳細資訊,請參閱記憶體內部 OLTP 的純量使用者定義函數

欄位名稱 數據類型 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 SELFEXECUTE AS <principal>,則為指定主體的標識碼。
-2 = EXECUTE AS OWNER
uses_native_compilation bit 0 = 不是原生編譯的
1 = 原生編譯

預設值是 0

適用於:SQL Server 2014 (12.x) 和更新版本。
is_inlineable bit 指出模組是否可以內嵌。 內嵌性是以 需求中指定的條件為基礎。

0 = 無法內嵌
1 = 可以內嵌。

對於純量使用者定義函式 (UDF),如果 UDF 可以內嵌,則值為 10 否則為 。 它一律包含內嵌數據表值函式 (TVF) 和1所有其他模組類型的 值0

適用於:SQL Server 2019 (15.x) 和更新版本。
inline_type bit 指出模組目前是否開啟內嵌。
0 = 內嵌已關閉
1 = 內嵌已開啟。
對於純量使用者定義函式 (UDF),如果內嵌已開啟(明確或隱含),則值為 1 。 值一律 1 適用於內嵌數據表值函式 (TVF),以及其他 0 模組類型。

適用於:SQL Server 2019 (15.x) 和更新版本。

Remarks

DEFAULT檢視中找到條件約束的 D SQL 運算式,類型為 的物件。 在目錄檢視 CHECK中找到條件約束的 C SQL 運算式,類型為 的物件。

這項資訊也會在 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];