OBJECTPROPERTY (Transact-SQL)
廣告:
OBJECTPROPERTY ( id , property )
屬性名稱 |
對象類型 |
說明和返回的值 |
---|---|---|
CnstIsClustKey |
約束 |
具有聚集索引的 PRIMARY KEY 約束。 1 = True 0 = False |
CnstIsColumn |
約束 |
單個列上的 CHECK、DEFAULT 或 FOREIGN KEY 約束。 1 = True 0 = False |
CnstIsDeleteCascade |
約束 |
具有 ON DELETE CASCADE 選項的 FOREIGN KEY 約束。 1 = True 0 = False |
CnstIsDisabled |
約束 |
禁用的約束。 1 = True 0 = False |
CnstIsNonclustKey |
約束 |
非聚集索引的 PRIMARY KEY 或 UNIQUE 約束。 1 = True 0 = False |
CnstIsNotRepl |
約束 |
使用 NOT FOR REPLICATION 關鍵字定義的約束。 1 = True 0 = False |
CnstIsNotTrusted |
約束 |
啟用約束時未檢查現有行,因此可能不是所有行都適用該約束。 1 = True 0 = False |
CnstIsUpdateCascade |
約束 |
具有 ON UPDATE CASCADE 選項的 FOREIGN KEY 約束。 1 = True 0 = False |
ExecIsAfterTrigger |
觸發器 |
AFTER 觸發器。 1 = True 0 = False |
ExecIsAnsiNullsOn |
Transact-SQL 函數、Transact-SQL 過程、Transact-SQL 觸發器、視圖 |
創建時的 ANSI_NULLS 設置。 1 = True 0 = False |
ExecIsDeleteTrigger |
觸發器 |
DELETE 觸發器。 1 = True 0 = False |
ExecIsFirstDeleteTrigger |
觸發器 |
對表執行 DELETE 時觸發的第一個觸發器。 1 = True 0 = False |
ExecIsFirstInsertTrigger |
觸發器 |
對表執行 INSERT 時觸發的第一個觸發器。 1 = True 0 = False |
ExecIsFirstUpdateTrigger |
觸發器 |
對表執行 UPDATE 時觸發的第一個觸發器。 1 = True 0 = False |
ExecIsInsertTrigger |
觸發器 |
INSERT 觸發器。 1 = True 0 = False |
ExecIsInsteadOfTrigger |
觸發器 |
INSTEAD OF 觸發器。 1 = True 0 = False |
ExecIsLastDeleteTrigger |
觸發器 |
對表執行 DELETE 時激發的最后一個觸發器。 1 = True 0 = False |
ExecIsLastInsertTrigger |
觸發器 |
對表執行 INSERT 時激發的最后一個觸發器。 1 = True 0 = False |
ExecIsLastUpdateTrigger |
觸發器 |
對表執行 UPDATE 時激發的最后一個觸發器。 1 = True 0 = False |
ExecIsQuotedIdentOn |
Transact-SQL 函數、Transact-SQL 過程、Transact-SQL 觸發器、視圖 |
創建時的 QUOTED_IDENTIFIER 設置。 1 = True 0 = False |
ExecIsStartup |
過程 |
啟動過程。 1 = True 0 = False |
ExecIsTriggerDisabled |
觸發器 |
禁用的觸發器。 1 = True 0 = False |
ExecIsTriggerNotForRepl |
觸發器 |
定義為 NOT FOR REPLICATION 的觸發器。 1 = True 0 = False |
ExecIsUpdateTrigger |
觸發器 |
UPDATE 觸發器。 1 = True 0 = False |
HasAfterTrigger |
表、視圖 |
表或視圖具有 AFTER 觸發器。 1 = True 0 = False |
HasDeleteTrigger |
表、視圖 |
表或視圖具有 DELETE 觸發器。 1 = True 0 = False |
HasInsertTrigger |
表、視圖 |
表或視圖具有 INSERT 觸發器。 1 = True 0 = False |
HasInsteadOfTrigger |
表、視圖 |
表或視圖具有 INSTEAD OF 觸發器。 1 = True 0 = False |
HasUpdateTrigger |
表、視圖 |
表或視圖具有 UPDATE 觸發器。 1 = True 0 = False |
IsAnsiNullsOn |
Transact-SQL 函數、Transact-SQL 過程、表、Transact-SQL 觸發器、視圖 |
指定表的 ANSI NULLS 選項設置為 ON。這表示所有對空值的比較都取值為 UNKNOWN。只要表存在,此設置將應用于表定義中的所有表達式,包括計算列和約束。 1 = True 0 = False |
IsCheckCnst |
架構范圍內的任何對象 |
CHECK 約束。 1 = True 0 = False |
IsConstraint |
架構范圍內的任何對象 |
列或表的單列 CHECK、DEFAULT 或 FOREIGN KEY 約束。 1 = True 0 = False |
IsDefault |
架構范圍內的任何對象 |
綁定的默認值。 1 = True 0 = False |
IsDefaultCnst |
架構范圍內的任何對象 |
DEFAULT 約束。 1 = True 0 = False |
IsDeterministic |
函數、視圖 |
函數或視圖的確定性屬性。 1 = 確定 0 = 不確定 |
IsEncrypted |
Transact-SQL 函數、Transact-SQL 過程、表、Transact-SQL 觸發器和視圖 |
指示模塊語句的原始文本已轉換為模糊格式。模糊代碼的輸出在 SQL Server 2005 的任何目錄視圖中都不能直接顯示。對系統表或數據庫文件沒有訪問權限的用戶不能檢索模糊文本。但是,能溝通過 DAC 端口訪問系統表的用戶或能夠直接訪問數據庫文件的用戶可以使用此文本。此外,能夠向服務器進程附加調試器的用戶可在運行時從內存中檢索原始過程。 1 = 已加密 0 = 未加密 基本數據類型:int |
IsExecuted |
架構范圍內的任何對象 |
可執行對象(視圖、過程、函數或觸發器)。 1 = True 0 = False |
IsExtendedProc |
架構范圍內的任何對象 |
擴展過程。 1 = True 0 = False |
IsForeignKey |
架構范圍內的任何對象 |
FOREIGN KEY 約束。 1 = True 0 = False |
IsIndexed |
表、視圖 |
包含索引的表或視圖。 1 = True 0 = False |
IsIndexable |
表、視圖 |
可以創建索引的表或視圖。 1 = True 0 = False |
IsInlineFunction |
函數 |
內聯函數。 1 = 內聯函數 0 = 非內聯函數 |
IsMSShipped |
架構范圍內的任何對象 |
安裝 SQL Server 過程中創建的對象。 1 = True 0 = False |
IsPrimaryKey |
架構范圍內的任何對象 |
PRIMARY KEY 約束。 1 = True 0 = False NULL = 非函數,或對象 ID 無效。 |
IsProcedure |
架構范圍內的任何對象 |
過程。 1 = True 0 = False |
IsQuotedIdentOn |
Transact-SQL 函數、Transact-SQL 過程、表、Transact-SQL 觸發器、視圖、CHECK 約束、DEFAULT 定義 |
指定對象的引號標識符設置為 ON。這表示用英文雙引號分隔對象定義中涉及的所有表達式中的標識符。 1 = ON 0 = OFF |
IsQueue |
架構范圍內的任何對象 |
Service Broker 隊列 1 = True 0 = False |
IsReplProc |
架構范圍內的任何對象 |
復制過程。 1 = True 0 = False |
IsRule |
架構范圍內的任何對象 |
綁定規則。 1 = True 0 = False |
IsScalarFunction |
函數 |
標量值函數。 1 = 標量值函數 0 = 非標量值函數 |
IsSchemaBound |
函數、視圖 |
使用 SCHEMABINDING 創建的綁定到架構的函數或視圖。 1 = 綁定到架構 0 = 不綁定架構。 |
IsSystemTable |
表 |
系統表。 1 = True 0 = False |
IsTable |
表 |
表。 1 = True 0 = False |
IsTableFunction |
函數 |
表值函數。 1 = 表值函數 0 = 非表值函數 |
IsTrigger |
架構范圍內的任何對象 |
觸發器。 1 = True 0 = False |
IsUniqueCnst |
架構范圍內的任何對象 |
UNIQUE 約束。 1 = True 0 = False |
IsUserTable |
表 |
用戶定義的表。 1 = True 0 = False |
IsView |
視圖 |
視圖。 1 = True 0 = False |
OwnerId |
架構范圍內的任何對象 |
對象的所有者。 注意
架構所有者不一定是對象所有者。例如,子對象(其 parent_object_id 為非空值)將始終返回與父對象相同的所有者 ID。
Nonnull = 對象所有者的數據庫用戶 ID。 |
TableDeleteTrigger |
表 |
表具有 DELETE 觸發器。 >1 = 指定類型的第一個觸發器的 ID。 |
TableDeleteTriggerCount |
表 |
表具有指定數目的 DELETE 觸發器。 >0 = DELETE 觸發器數目。 |
TableFullTextMergeStatus |
表 |
表所具有的全文索引當前是否正在合并。 0 = 表沒有全文索引,或者全文索引未在合并。 1 = 全文索引正在合并。 |
TableFullTextBackgroundUpdateIndexOn |
表 |
表已啟用全文后臺更新索引(自動更改跟蹤)。 1 = TRUE 0 = FALSE |
TableFulltextCatalogId |
表 |
表的全文索引數據所在的全文目錄的 ID。 非零 = 全文目錄 ID,它與全文索引表中標識行的唯一索引相關。 0 = 表沒有全文索引。 |
TableFulltextChangeTrackingOn |
表 |
表已啟用全文更改跟蹤。 1 = TRUE 0 = FALSE |
TableFulltextDocsProcessed |
表 |
自開始全文索引以來所處理的行數。在為進行全文搜索而正在編制索引的表中,將一個行的所有列視為要編制索引的文檔的一部分。 0 = 沒有完成的活動爬網或全文索引。 > 0 = 以下選項之一:
NULL = 表沒有全文索引。 注意
此屬性不監視已刪除行,也不對已刪除行進行計數。
|
TableFulltextFailCount |
表 |
全文搜索未編制索引的行數。 0 = 填充已完成。 > 0 = 以下選項之一:
NULL = 表沒有全文索引。 |
TableFulltextItemCount |
表 |
成功編制了全文索引的行數。 |
TableFulltextKeyColumn |
表 |
與參與全文索引定義的單列唯一索引關聯的列的 ID。 0 = 表沒有全文索引。 |
TableFulltextPendingChanges |
表 |
要處理的掛起更改跟蹤項的數目。 0 = 未啟用更改跟蹤。 NULL = 表沒有全文索引。 |
TableFulltextPopulateStatus |
表 |
0 = 空閑。 1 = 正在進行完全填充。 2 = 正在進行增量填充。 3 = 正在傳播所跟蹤的更改。 4 = 正在進行后臺更新索引(例如,自動跟蹤更改)。 5 = 全文索引已中止或暫停。 |
TableHasActiveFulltextIndex |
表 |
表具有活動的全文索引。 1 = True 0 = False |
TableHasCheckCnst |
表 |
表具有 CHECK 約束。 1 = True 0 = False |
TableHasClustIndex |
表 |
表具有聚集索引。 1 = True 0 = False |
TableHasDefaultCnst |
表 |
表具有 DEFAULT 約束。 1 = True 0 = False |
TableHasDeleteTrigger |
表 |
表具有 DELETE 觸發器。 1 = True 0 = False |
TableHasForeignKey |
表 |
表具有 FOREIGN KEY 約束。 1 = True 0 = False |
TableHasForeignRef |
表 |
表由 FOREIGN KEY 約束引用。 1 = True 0 = False |
TableHasIdentity |
表 |
表具有標識列。 1 = True 0 = False |
TableHasIndex |
表 |
表具有任意類型的索引。 1 = True 0 = False |
TableHasInsertTrigger |
表 |
對象具有 INSERT 觸發器。 1 = True 0 = False |
TableHasNonclustIndex |
表 |
表有非聚集索引。 1 = True 0 = False |
TableHasPrimaryKey |
表 |
表具有主鍵。 1 = True 0 = False |
TableHasRowGuidCol |
表 |
表的 uniqueidentifier 列具有 ROWGUIDCOL。 1 = True 0 = False |
TableHasTextImage |
表 |
表具有 text、ntext 或 image 列。 1 = True 0 = False |
TableHasTimestamp |
表 |
表具有 timestamp 列。 1 = True 0 = False |
TableHasUniqueCnst |
表 |
表具有 UNIQUE 約束。 1 = True 0 = False |
TableHasUpdateTrigger |
表 |
對象有 UPDATE 觸發器。 1 = True 0 = False |
TableHasVarDecimalStorageFormat |
表 |
為 vardecimal 存儲格式啟用表。 1 = True 0 = False |
TableInsertTrigger |
表 |
表具有 INSERT 觸發器。 >1 = 指定類型的第一個觸發器的 ID。 |
TableInsertTriggerCount |
表 |
表有指定數目的 INSERT 觸發器。 >0 = INSERT 觸發器的個數。 |
TableIsFake |
表 |
表不是真實的表。它將由 SQL Server 數據庫引擎根據需要在內部進行具體化。 1 = True 0 = False |
TableIsLockedOnBulkLoad |
表 |
bcp 或 BULK INSERT 作業導致表被鎖。 1 = True 0 = False |
TableIsPinned |
表 |
駐留表以將其保留在數據緩存中。 0 = False SQL Server 2005 及更高版本不支持此功能。 |
TableTextInRowLimit |
表 |
text in row 允許的最大字節數。 如果未設置 text in row 選項,則返回 0。 |
TableUpdateTrigger |
表 |
表具有 UPDATE 觸發器。 >1 = 指定類型的第一個觸發器的 ID。 |
TableUpdateTriggerCount |
表 |
表有指定數目的 UPDATE 觸發器。 > 0 = UPDATE 觸發器的個數。 |
TableHasColumnSet |
表 |
表具有列集。 0 = False 1 = True 有關詳細信息,請參閱使用列集。 |
數據庫引擎假定 object_id 位于當前數據庫上下文中。引用另一個數據庫中的 object_id 的查詢將返回 NULL 或返回不正確的結果。例如,在下面的查詢中,當前數據庫上下文為 master 數據庫。數據庫引擎將盡量返回該數據庫(而不是在查詢中指定的數據庫)中指定的 object_id 的屬性值。由于視圖 vEmployee 不在 master 數據庫中,該查詢將返回不正確的結果。
USE master; GO SELECT OBJECTPROPERTY(OBJECT_ID(N'AdventureWorks2008R2.HumanResources.vEmployee'), 'IsView'); GO
OBJECTPROPERTY(view_id, 'IsIndexable') 可能會耗費大量的計算機資源,這是因為處理 IsIndexable 屬性需要分析視圖定義、規范化和局部優化。盡管 IsIndexable 屬性可以標識出能編制索引的表或視圖,但在實際創建索引時,如果不能滿足某些索引鍵要求,創建過程仍然可能會失敗。有關詳細信息,請參閱 CREATE INDEX (Transact-SQL)。
如果至少添加了一個表列用于索引,則 OBJECTPROPERTY(table_id, 'TableHasActiveFulltextIndex') 將返回值 1 (true)。只要添加了用于索引的第一列后,全文索引即可用于填充。
創建表后,表的元數據中 QUOTED IDENTIFIER 選項始終是 ON,即使在創建表時將該選項設置為 OFF。因此,OBJECTPROPERTY(table_id, 'IsQuotedIdentOn') 將始終返回值 1 (true)。
A. 驗證某個對象是否為表
以下示例將測試 UnitMeasure 是否為 AdventureWorks2008R2 數據庫中的表。
USE AdventureWorks2008R2; GO IF OBJECTPROPERTY (OBJECT_ID(N'Production.UnitMeasure'),'ISTABLE') = 1 PRINT 'UnitMeasure is a table.' ELSE IF OBJECTPROPERTY (OBJECT_ID(N'Production.UnitMeasure'),'ISTABLE') = 0 PRINT 'UnitMeasure is not a table.' ELSE IF OBJECTPROPERTY (OBJECT_ID(N'Production.UnitMeasure'),'ISTABLE') IS NULL PRINT 'ERROR: UnitMeasure is not a valid object.'; GO
B. 驗證用戶定義的標量值函數是否為確定性函數
以下示例將測試用戶定義的標量值函數 ufnGetProductDealerPrice(該函數返回 money)是不是一個確定性函數。
結果集顯示 ufnGetProductDealerPrice 是一個確定性函數。
-----
0
C. 查找屬于特定架構的對象
廣告: