sys.sql_modules (Transact-SQL)
適用於:SQL Server Azure SQL 資料庫 Azure SQL 受控執行個體 Azure Synapse Analytics Analytics 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 (記憶體中最佳化)