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. 查找属于特定架构的对象
广告: