sys.sql_modules (Transact-SQL)

適用于:SQL ServerAzure SQL資料庫Azure SQL 受控執行個體Azure Synapse Analytics AnalyticsPlatform System (PDW)

針對SQL Server中的 SQL 語言定義模組的每個物件,各傳回一個資料列,包括原生編譯的純量使用者定義函數。 類型 P、RF、V、TR、FN、IF、TF 和 R 的物件,各有一個相關聯的 SQL 模組。 獨立預設值,即類型 D 的物件,在這份檢視中也有 SQL 模組定義。 如需這些類型的描述,請參閱 typesys.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 整數 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) ,如果 UDF 是內嵌的,則此值會是 1,否則為 0。 它一律包含內嵌資料表值函式的 1 值, (TVF) ,所有其他模組類型的 0。
inline_type bit 適用于:SQL Server 2019 (15.x) 和更新版本。

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

0 = 內嵌已關閉

1 = 內嵌已開啟。

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

備註

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

Sys.dm_db_uncontained_entities (Transact-SQL) 也會說明這項資訊。

重新命名預存程式、函式、檢視或觸發程式不會變更目錄檢視定義 sys.sql_modules 資料行中對應物件的名稱,也不會變更 OBJECT_DEFINITION 內建函式所傳回的定義。 基於這個理由,我們建議您 sp_rename 不要用來重新命名這些物件類型。 相反地,請卸除物件,再利用它的新名稱來重新建立物件。 深入瞭解 transact-SQL sp_rename ()

權限

目錄檢視內中繼資料的可見性會限制在使用者所擁有的安全性實體,或已授與使用者某些權限的安全性實體。 如需相關資訊,請參閱 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 系統目錄 FAQ
In-Memory OLTP (記憶體中最佳化)