sys.objects (Transact-SQL)
適用於:SQL Server
Azure SQL 資料庫
Azure SQL 受控執行個體
Azure Synapse Analytics
Analytics Platform System (PDW)
Microsoft Fabric 中的 SQL 分析端點
Microsoft Fabric 中的倉儲
包含資料庫中所建立之每個使用者定義架構範圍對象的數據列,包括原生編譯的純量使用者定義函式。
如需詳細資訊,請參閱記憶體內部 OLTP 的純量使用者定義函數。
注意
sys.objects
不會顯示 DDL 觸發程式,因為它們不是架構範圍。 在 sys.triggers 中找到所有觸發程式,包括 DML 和 DDL。 sys.triggers
支援各種觸發程式的名稱範圍規則混合。
資料行名稱 | 資料類型 | 描述 |
---|---|---|
name |
sysname | 物件名稱。 |
object_id |
int | 物件標識碼。 在資料庫內是唯一的。 |
principal_id |
int | 如果與架構擁有者不同,則為個別擁有者的標識符。 根據預設,架構自主物件是由架構擁有者所擁有。 不過,您可以使用 語句來變更擁有權,來指定 ALTER AUTHORIZATION 替代擁有者。NULL 如果沒有替代的個別擁有者。如果 NULL 物件類型是下列其中一個值,則為 :C = 檢查條件約束D = 預設 (條件約束或獨立)F = 外鍵條件約束PK = 主鍵條件約束R = 規則(舊樣式,獨立)TA = 元件 (CLR-integration) 觸發程式TR = SQL 觸發程式UQ = 唯一條件約束EC = Edge 條件約束 |
schema_id |
int | 物件所包含的架構標識碼。 架構範圍系統物件一律包含在 sys 或 INFORMATION_SCHEMA 架構中。 |
parent_object_id |
int | 這個物件所屬之對象的標識碼。0 = 不是子物件。 |
type |
char(2) | 物件類型:AF = 聚合函數 (CLR)C = 檢查條件約束D = 預設 (條件約束或獨立)F = 外鍵條件約束FN = SQL 純量函式FS = Assembly (CLR) scalar-functionFT = Assembly (CLR) 資料表值函式IF = SQL 內嵌資料表值函式 (TVF)IT = 內部數據表P = SQL 預存程式PC = Assembly (CLR) 預存程式PG = 計劃指南PK = 主鍵條件約束R = 規則(舊樣式,獨立)RF = Replication-filter-procedureS = 系統基表SN = 同義字SO = Sequence 物件U = 資料表 (使用者定義)V = 檢視適用於:SQL Server 2012 (11.x) 和更新版本 SQ = 服務佇列TA = 元件 (CLR) DML 觸發程式TF = SQL table-valued-function (TVF)TR = SQL DML 觸發程式TT = 資料表類型UQ = 唯一條件約束X = 擴充預存程式適用於:SQL Server 2014 (12.x) 和更新版本、Azure SQL 資料庫、Azure Synapse Analytics、Analytics Platform System (PDW) ST = 統計數據樹狀結構適用於:SQL Server 2016 (13.x) 和更新版本、Azure SQL 資料庫、Azure Synapse Analytics、Analytics Platform System (PDW) ET = 外部數據表適用於:SQL Server 2017 (14.x) 和更新版本、Azure SQL 資料庫、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 索引或空間索引,會被視為 中的 sys.objects
內部資料表(type
是 IT
, 且 type_desc
為 INTERNAL_TABLE
。 針對擴充索引:
name
是索引數據表的內部名稱parent_object_id
object_id
是基表的is_ms_shipped
、is_published
和資料is_schema_published
行設定為0
相關系統檢視
您可以使用特定物件類型的系統檢視來檢視物件的子集,例如:
權限
目錄檢視中元數據的可見度僅限於用戶擁有的安全性實體,或用戶獲授與某些許可權的安全性實體。 如需相關資訊,請參閱 Metadata Visibility Configuration。
範例
A. 傳回過去 N 天內修改的所有物件
執行下列查詢之前,請將 和 <n_days>
取代<database_name>
為有效的值。
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. 傳回指定預存程式或函式的參數
執行下列查詢之前,請將 和 <schema_name.object_name>
取代<database_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
INNER JOIN sys.schemas AS s
ON s.schema_id = xsc.schema_id
WHERE s.name = '<schema_name>';
GO
相關內容
意見反映
https://aka.ms/ContentUserFeedback。
即將推出:我們會在 2024 年淘汰 GitHub 問題,並以全新的意見反應系統取代並作為內容意見反應的渠道。 如需更多資訊,請參閱:提交及檢視以下的意見反映: