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