sys.objects (Transact-SQL)
適用于:SQL Server
Azure SQL資料庫
Azure SQL 受控執行個體Azure Synapse
Analytics Analytics
Platform System (PDW)
包含資料庫中所建立之每個使用者定義架構範圍物件的資料列,包括原生編譯的純量使用者定義函式。
如需詳細資訊,請參閱記憶體內部 OLTP 的純量使用者定義函數。
注意
sys.objects
不會顯示 DDL 觸發程序,因為它們不是以結構描述為範圍。 在 sys.triggers中找到所有觸發程式,包括 DML 和 DDL。 sys.triggers
支援各種觸發程序種類的名稱範圍規則混合。
資料行名稱 | 資料類型 | 描述 |
---|---|---|
NAME | sysname | 物件名稱。 |
object_id | int | 物件識別碼。 在資料庫中,這是唯一的。 |
principal_id | int | 如果個別擁有者不是結構描述擁有者,這便是個別擁有者的識別碼。 依預設,結構描述包含的物件就是結構描述擁有者所擁有的物件。 不過,您也可以利用 ALTER AUTHORIZATION 陳述式來變更擁有權,指定替代的擁有者。 如果沒有替代的個別擁有者,這便是 NULL。 如果物件類型是下列其中一項,便是 NULL: C = CHECK 條件約束 D = DEFAULT (條件約束或獨立式) F = FOREIGN KEY 條件約束 PK = PRIMARY KEY 條件約束 R = 規則 (舊式、獨立式) TA = 組件 (CLR 整合) 觸發程序 TR = SQL 觸發程序 UQ = UNIQUE 條件約束 EC = Edge 條件約束 |
schema_id | int | 物件所在的結構描述識別碼。 結構描述範圍的系統物件永遠包含在 sys 或 INFORMATION_SCHEMA 結構描述中。 |
parent_object_id | int | 這個物件所屬的物件識別碼。 0 = 不是子物件。 |
類型 | char(2) | 物件類型: AF = 彙總函式 (CLR) C = CHECK 條件約束 D = DEFAULT (條件約束或獨立式) F = FOREIGN KEY 條件約束 FN = SQL 純量函數 FS = 組件 (CLR) 純量函數 FT = 組件 (CLR) 資料表值函式 IF = SQL 嵌入資料表值函式 IT = 內部資料表 P = SQL 預存程序 PC = 組件 (CLR) 預存程序 PG = 計畫指南 PK = PRIMARY KEY 條件約束 R = 規則 (舊式、獨立式) RF = 複寫篩選程序 S = 系統基底資料表 SN = 同義字 SO = 序列物件 U = 資料表 (使用者定義) V = 檢視 適用于:SQL Server 2012 (11.x) 和更新版本。 SQ = 服務佇列 TA = 組件 (CLR) DML 觸發程序 TF = SQL 資料表值函式 TR = SQL DML 觸發程序 TT = 資料表類型 UQ = UNIQUE 條件約束 X = 擴充預存程序 適用于:SQL Server 2014 (12.x) 和更新版本、Azure SQL Database、Azure Synapse Analytics、Analytics Platform System (PDW) 。 ST = STATS_TREE 適用于:SQL Server 2016 (13.x) 和更新版本、Azure SQL Database、Azure Synapse Analytics、Analytics Platform System (PDW) 。 ET = 外部資料表 適用于:SQL Server 2017 (14.x) 和更新版本、Azure SQL Database、Azure Synapse Analytics、Analytics Platform System (PDW) 。 EC = Edge 條件約束 |
type_desc | nvarchar(60) | 物件類型的描述: AGGREGATE_FUNCTION CHECK_CONSTRAINT CLR_SCALAR_FUNCTION CLR_STORED_PROCEDURE CLR_TABLE_VALUED_FUNCTION CLR_TRIGGER DEFAULT_CONSTRAINT EDGE_CONSTRAINT EXTENDED_STORED_PROCEDURE FOREIGN_KEY_CONSTRAINT INTERNAL_TABLE PLAN_GUIDE PRIMARY_KEY_CONSTRAINT REPLICATION_FILTER_PROCEDURE RULE SEQUENCE_OBJECT SERVICE_QUEUE SQL_INLINE_TABLE_VALUED_FUNCTION SQL_SCALAR_FUNCTION SQL_STORED_PROCEDURE SQL_TABLE_VALUED_FUNCTION SQL_TRIGGER SYNONYM SYSTEM_TABLE TYPE_TABLE UNIQUE_CONSTRAINT USER_TABLE VIEW |
create_date | datetime | 物件的建立日期。 |
modify_date | datetime | 上次利用 ALTER 陳述式來修改物件的日期。 如果物件是資料表或檢視表,modify_date也會在建立或改變數據表或檢視表的索引時變更。 |
is_ms_shipped | bit | 物件是由內部SQL Server元件所建立。 |
is_published | bit | 已發行物件。 |
is_schema_published | bit | 僅發行物件的結構描述。 |
備註
您可以將 OBJECT_ID、 OBJECT_NAME和 OBJECTPROPERTY () 內建函式套用至 中顯示的 sys.objects
物件。
此檢視有一個版本,其具有相同的架構,稱為 sys.system_objects,可顯示系統物件。 另一個檢視稱為 sys.all_objects ,可同時顯示系統和使用者物件。 這三個目錄檢視都有相同的結構。
在這個版本的SQL Server中,擴充索引,例如 XML 索引或空間索引,會被視為 (類型 = IT 的內部 sys.objects
資料表,而 type_desc = INTERNAL_TABLE) 。 如果是擴充索引:
name
是索引資料表的內部名稱。parent_object_id
object_id
是基表的 。is_ms_shipped
、is_published
和資料is_schema_published
行會設定為0
。
相關的實用系統檢視
您可以使用特定物件類型的系統檢視來檢視物件的子集,例如:
權限
目錄檢視內中繼資料的可見性會限制在使用者所擁有的安全性實體,或已授與使用者某些權限的安全性實體。 如需相關資訊,請參閱 Metadata Visibility Configuration。
範例
A. 傳回過去 N 天內已修改的所有物件
在您執行下列查詢之前,請使用有效的值取代 <database_name>
及 <n_days>
。
USE <database_name>;
GO
SELECT name AS object_name
,SCHEMA_NAME(schema_id) AS schema_name
,type_desc
,create_date
,modify_date
FROM sys.objects
WHERE modify_date > GETDATE() - <n_days>
ORDER BY modify_date;
GO
B. 傳回指定預存程式或函式的參數
在您執行下列查詢之前,請使用有效的名稱取代 <database_name>
及 <schema_name.object_name>
。
USE <database_name>;
GO
SELECT SCHEMA_NAME(schema_id) AS schema_name
,o.name AS object_name
,o.type_desc
,p.parameter_id
,p.name AS parameter_name
,TYPE_NAME(p.user_type_id) AS parameter_type
,p.max_length
,p.precision
,p.scale
,p.is_output
FROM sys.objects AS o
INNER JOIN sys.parameters AS p ON o.object_id = p.object_id
WHERE o.object_id = OBJECT_ID('<schema_name.object_name>')
ORDER BY schema_name, object_name, p.parameter_id;
GO
C. 傳回資料庫中的所有使用者定義函式
在您執行下列查詢之前,請使用有效的資料庫名稱取代 <database_name>
。
USE <database_name>;
GO
SELECT name AS function_name
,SCHEMA_NAME(schema_id) AS schema_name
,type_desc
,create_date
,modify_date
FROM sys.objects
WHERE type_desc LIKE '%FUNCTION%';
GO
D. 傳回架構中每個物件的擁有者
在您執行下列查詢之前,請使用有效的名稱取代所有 <database_name>
及 <schema_name>
。
USE <database_name>;
GO
SELECT 'OBJECT' AS entity_type
,USER_NAME(OBJECTPROPERTY(object_id, 'OwnerId')) AS owner_name
,name
FROM sys.objects WHERE SCHEMA_NAME(schema_id) = '<schema_name>'
UNION
SELECT 'TYPE' AS entity_type
,USER_NAME(TYPEPROPERTY(SCHEMA_NAME(schema_id) + '.' + name, 'OwnerId')) AS owner_name
,name
FROM sys.types WHERE SCHEMA_NAME(schema_id) = '<schema_name>'
UNION
SELECT 'XML SCHEMA COLLECTION' AS entity_type
,COALESCE(USER_NAME(xsc.principal_id),USER_NAME(s.principal_id)) AS owner_name
,xsc.name
FROM sys.xml_schema_collections AS xsc JOIN sys.schemas AS s
ON s.schema_id = xsc.schema_id
WHERE s.name = '<schema_name>';
GO