sys.sql_modules (Transact-SQL)

適用於:SQL ServerAzure SQL 資料庫Azure SQL 受控執行個體Azure Synapse AnalyticsAnalytics Platform System (PDW)Microsoft Fabric 中的 SQL 分析端點Microsoft Fabric 中的倉儲

針對 SQL Server 中 SQL 語言定義的模組的每個物件,傳回一個數據列,包括原生編譯的純量使用者定義函數。 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 EXECUTE AS 資料庫主體的標識碼。

NULL 根據預設,或如果 EXECUTE AS CALLER。

如果 EXECUTE AS SELF 或 EXECUTE AS <principal,則為指定主體>的標識符。

-2 = 執行身分擁有者。
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),如果 UDF 是可內嵌的,則值為 1,否則為 0。 它一律包含內嵌數據表值函式 (TVF) 的 1 值,而所有其他模組類型則包含 0。
inline_type bit 適用於:SQL Server 2019 (15.x) 和更新版本。

指出模組目前是否開啟內嵌。

0 = 內嵌已關閉

1 = 內嵌已開啟。

若為純量使用者定義函式 (UDF),如果內嵌已開啟(明確或隱含),此值將會是 1。 內嵌數據表值函式的值一律為 1,而其他模組類型則為 0。

備註

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

此資訊也會在 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 (記憶體中最佳化)