OBJECTPROPERTYEX (Transact-SQL)

更新: 2006 年 12 月 12 日

傳回目前資料庫中以結構描述為範圍之物件的相關資訊。如需這些物件的清單,請參閱<sys.objects (Transact-SQL)>。不是以結構描述為範圍的物件,如資料定義語言 (DDL) 觸發程序和事件通知,無法使用 OBJECTPROPERTYEX。

主題連結圖示Transact-SQL 語法慣例

語法

OBJECTPROPERTYEX ( id , property )

引數

  • id
    這是代表目前資料庫中之物件識別碼的運算式。idint,假設為在目前資料庫內容中以結構描述為範圍的物件。
  • property
    這是包含為識別碼指定物件所傳回資訊的運算式。傳回類型為 sql_variant。下表顯示了每一屬性值的基底資料類型。

    ms188390.note(zh-tw,SQL.90).gif附註:
    除非另有說明,否則,當 property 不是有效的屬性名稱、id 不是有效的物件識別碼、id 不是指定 property 所支援的物件類型,或呼叫者沒有檢視物件中繼資料的權限時,便傳回 NULL。

    屬性名稱

傳回類型

sql_variant

例外

當發生錯誤,或呼叫者沒有檢視物件的權限時,便會傳回 NULL。

在 SQL Server 2005 中,使用者只能檢視使用者擁有或被授與某些權限之安全性實體的中繼資料。這表示發出中繼資料的內建函數 (例如,OBJECTPROPERTYEX) 會在使用者不具有該物件任何權限時傳回 NULL。如需詳細資訊,請參閱<中繼資料可見性組態>和<中繼資料可見性疑難排解>。

備註

Database Engine 假設 object_id 在目前資料庫內容中。參考另一資料庫中之 object_id 的查詢會傳回 NULL 或不正確的結果。例如,在下列查詢中,目前資料庫內容便是 master 資料庫。Database Engine 會嘗試傳回這個資料庫 (而不是查詢中所指定的資料庫) 中指定之 object_id 的屬性值。查詢會傳回不正確的結果,因為 vEmployee 檢視不在 master 資料庫中。

USE master;
GO
SELECT OBJECTPROPERTYEX(OBJECT_ID(N'AdventureWorks.HumanResources.vEmployee'), 'IsView');
GO

OBJECTPROPERTYEX(view_id**,'IsIndexable'**) 可能耗用大量電腦資源,因為評估 IsIndexable 屬性需要剖析檢視定義、正規化和部分最佳化。雖然 IsIndexable 屬性會識別能夠建立索引的資料表或檢視,但如果不符合特定索引鍵需求,實際建立索引的作業仍可能失敗。如需詳細資訊,請參閱<CREATE INDEX (Transact-SQL)>。

當至少加入資料表的一個資料行來建立索引時,OBJECTPROPERTYEX (table_id**,'TableHasActiveFulltextIndex'**) 會傳回 1 (true) 值。只要加入第一個用來建立索引的資料行,全文檢索索引作業就會成為使用中,以便擴展。

結果集會套用中繼資料可見性的限制。如需詳細資訊,請參閱<中繼資料可見性組態>。

範例

A. 找出物件的基底類型

以下的範例在 AdventureWorks 資料庫中為 Employee 資料表建立了 SYNONYM MyEmployeeTable,然後傳回 SYNONYM 的基底類型。

USE AdventureWorks;
GO
CREATE SYNONYM MyEmployeeTable FOR HumanResources.Employee;
GO
SELECT OBJECTPROPERTYEX ( object_id(N'MyEmployeeTable'), N'BaseType')AS [Base Type];
GO

結果集顯示基礎物件 (Employee 資料表) 的基底類型是使用者資料表。

Base Type 
-------- 
U 

B. 傳回屬性值

以下的範例傳回了指定資料表的 UPDATE 觸發程序數量。

USE AdventureWorks;
GO
SELECT OBJECTPROPERTYEX(OBJECT_ID(N'HumanResources.Employee'), N'TABLEUPDATETRIGGERCOUNT');
GO

C. 尋找具有 FOREIGN KEY 條件約束的資料表

下列範例使用 TableHasForeignKey 屬性來傳回具有 FOREIGN KEY 條件約束的所有資料表。

USE AdventureWorks;
GO
SELECT name, object_id, schema_id, type_desc
FROM sys.objects 
WHERE OBJECTPROPERTYEX(object_id, N'TableHasForeignKey') = 1
ORDER BY name;
GO

請參閱

參考

CREATE SYNONYM (Transact-SQL)
中繼資料函數 (Transact-SQL)
OBJECT_DEFINITION (Transact-SQL)
OBJECT_ID (Transact-SQL)
OBJECT_NAME (Transact-SQL)
sys.objects (Transact-SQL)
ALTER AUTHORIZATION (Transact-SQL)
TYPEPROPERTY (Transact-SQL)

其他資源

使用者結構描述分隔

說明及資訊

取得 SQL Server 2005 協助

變更歷程記錄

版本 歷程記錄

2006 年 12 月 12 日

新增內容:
  • 新增 Service Pack 2 中提供的 TableHasVarDecimalStorageFormat 屬性。

2006 年 7 月 17 日

新增內容:
  • 加入「例外狀況」一節。

2005 年 12 月 5 日

變更的內容:
  • 更正 IsTableFunctionIsScalarFunction 屬性的定義。
  • 修改範例 C。