sys.sql_modules (Transact-SQL)
針對本身是 SQL Server 中 SQL 語言定義模組的每個物件,各傳回一個資料列。 類型 P、RF、V、TR、FN、IF、TF 和 R 的物件,各有一個相關聯的 SQL 模組。 獨立預設值,即類型 D 的物件,在這份檢視中也有 SQL 模組定義。 如需這些類型的說明,請參閱 sys.objects 目錄檢視中的 type 資料行。
適用於:SQL Server (SQL Server 2008 透過目前版本)、Windows Azure SQL 資料庫 (初始版本,透過目前版本)。 |
資料行名稱 |
資料類型 |
描述 |
|
---|---|---|---|
object_id |
int |
包含物件的物件識別碼。 在資料庫中,這是唯一的。 |
|
definition |
nvarchar(max) |
定義這個模組的 SQL 文字。 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 資料庫主體的識別碼。 在預設或 EXECUTE AS CALLER 的情況下為 NULL。 指定主體的識別碼 (如果 EXECUTE AS SELF 或 EXECUTE AS <principal> 時)。 -2 = EXECUTE AS OWNER。 |
|
uses_native_compilation |
bit |
0 = 不是原生編譯 1 = 是原生編譯 預設值為 0。
|
備註
DEFAULT 條件約束 (類型 D 的物件) 的 SQL 運算式,可在 sys.default_constraints 目錄檢視中找到。 CHECK 條件約束 (類型 C 的物件) 的 SQL 運算式,可在 sys.check_constraints 目錄檢視中找到。
在 sys.dm_db_uncontained_entities (Transact-SQL) 也描述這個資訊。
權限
目錄檢視內中繼資料的可見性會限制在使用者所擁有的安全性實體,或已授與使用者某些權限的安全性實體。 如需詳細資訊,請參閱<中繼資料可見性組態>。
範例
下列範例會傳回目前資料庫中每個模組的名稱、類型和定義。
SELECT sm.object_id, OBJECT_NAME(sm.object_id) 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
ORDER BY o.type;
GO