OBJECTPROPERTYEX (Transact-SQL)
更新: 2006 年 12 月 12 日
傳回目前資料庫中以結構描述為範圍之物件的相關資訊。如需這些物件的清單,請參閱<sys.objects (Transact-SQL)>。不是以結構描述為範圍的物件,如資料定義語言 (DDL) 觸發程序和事件通知,無法使用 OBJECTPROPERTYEX。
語法
OBJECTPROPERTYEX ( id , property )
引數
- id
這是代表目前資料庫中之物件識別碼的運算式。id 是 int,假設為在目前資料庫內容中以結構描述為範圍的物件。
property
這是包含為識別碼指定物件所傳回資訊的運算式。傳回類型為 sql_variant。下表顯示了每一屬性值的基底資料類型。附註: 除非另有說明,否則,當 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)
其他資源
說明及資訊
變更歷程記錄
版本 | 歷程記錄 |
---|---|
2006 年 12 月 12 日 |
|
2006 年 7 月 17 日 |
|
2005 年 12 月 5 日 |
|