返回当前数据库中对象的有关信息。数据库
OBJECTPROPERTY ( id , property )缓存
id架构
一个表达式,包含当前数据库中某个对象的 ID。id 的数据类型是 int。ide
Property函数
一个表达式,包含针对由 id 指定的对象将要返回的信息。Property 能够是下面这些值中的一个。测试
说明 除非加以注释,不然,若是 property 是无效的属性名,则返回 NULL。优化
属性名称 | 对象类型 | 描述和返回的值 |
---|---|---|
CnstIsClustKey | 约束 | 带有汇集索引的主键。 1 = True |
CnstIsColumn | 约束 | COLUMN 约束。 1 = True |
CnstIsDeleteCascade | 约束 | 带有 ON DELETE CASCADE 选项的外键约束。 |
CnstIsDisabled | 约束 | 禁用的约束。 1 = True |
CnstIsNonclustKey | 约束 | 带有非汇集索引的主键。 1 = True |
CnstIsNotTrusted | 约束 | 启用约束时未检查现有行,因此可能不是全部行都受约束的控制。 1 = True |
CnstIsNotRepl | 约束 | 使用 NOT FOR REPLICATION 关键字定义约束。 |
CnstIsUpdateCascade | 约束 | 带有 ON UPDATE CASCADE 选项的外键约束。 |
ExecIsAfterTrigger | 触发器 | AFTER 触发器。 |
ExecIsAnsiNullsOn | 过程、触发器、视图 | 建立时的 ANSI_NULLS 设置。 1 = True |
ExecIsDeleteTrigger | 触发器 | DELETE 触发器。 1 = True |
ExecIsFirstDeleteTrigger | 触发器 | 对表执行 DELETE 时触发的第一个触发器。 |
ExecIsFirstInsertTrigger | 触发器 | 对表执行 INSERT 时触发的第一个触发器。 |
ExecIsFirstUpdateTrigger | 触发器 | 对表执行 UPDATE 时触发的第一个触发器。 |
ExecIsInsertTrigger | 触发器 | INSERT 触发器。 1 = True |
ExecIsInsteadOfTrigger | 触发器 | INSTEAD OF 触发器。 |
ExecIsLastDeleteTrigger | 触发器 | 对表执行 DELETE 时触发的最后一个触发器。 |
ExecIsLastInsertTrigger | 触发器 | 对表执行 INSERT 时触发的最后一个触发器。 |
ExecIsLastUpdateTrigger | 触发器 | 对表执行 UPDATE 时触发的最后一个触发器。 |
ExecIsQuotedIdentOn | 过程、触发器、视图 | 建立时的 QUOTED_IDENTIFIER 设置。 1 = True |
ExecIsStartup | 过程 | 启动过程。 1 = True |
ExecIsTriggerDisabled | 触发器 | 禁用的触发器。 1 = True |
ExecIsUpdateTrigger | 触发器 | UPDATE 触发器。 1 = True |
HasAfterTrigger | 表,视图 | 表或视图具备 AFTER 触发器。 1 = True |
HasInsertTrigger | 表,视图 | 表或视图具备 INSERT 触发器。 1 = True |
HasInsteadOfTrigger | 表、视图 | 表或视图具备 INSTEAD OF 触发器。 1 = True |
HasUpdateTrigger | 表、视图 | 表或视图具备 UPDATE 触发器。 1 = True |
IsAnsiNullsOn | 函数、过程、表、触发器、视图 | 指定表的 ANSI NULLS 选项设置为 ON,表示全部与空值的比较都取值为 UNKNOWN。只要表存在,该设置就应用于表定义中的全部表达式,包括计算列和约束。 1 = ON |
IsCheckCnst | 任何 | CHECK 约束。 1 = True |
IsConstraint | 任何 | 约束。 1 = True |
IsDefault | 任何 | 绑定的默认值。 1 = True |
IsDefaultCnst | 任何 | DEFAULT 约束。 1 = True |
IsDeterministic | 函数、视图 | 函数的肯定性属性。只适用于标量值及表值函数。 1 = 可肯定的 |
IsExecuted | 任何 | 指定执行该对象的方式(视图、过程或触发器)。 1 = True |
IsExtendedProc | 任何 | 扩展过程。 1 = True |
IsForeignKey | 任何 | FOREIGN KEY 约束。 1 = True |
IsIndexed | 表、视图 | 带有索引的表或视图。 |
IsIndexable | 表、视图 | 能够建立索引的表或视图。 |
IsInlineFunction | 函数 | 内嵌函数。 1 = 内嵌函数 |
IsMSShipped | 任何 | 在安装 Microsoft SQL Server 2000 的过程当中建立的对象。 1 = True |
IsPrimaryKey | 任何 | PRIMARY KEY 约束。 1 = True |
IsProcedure | 任何 | 过程。 1 = True |
IsQuotedIdentOn | 函数、过程、表、触发器、视图 | 指定表的被引用标识符设置为 ON,表示在表定义所涉及的全部表达式中,双引号标记分隔标识符。 1 = ON |
IsReplProc | 任何 | 复制过程。 1 = True |
IsRule | 任何 | 绑定的规则。 1 = True |
IsScalarFunction | 函数 | 标量值函数。 1 = 标量值 |
IsSchemaBound | 函数,视图 | 使用 SCHEMABINDING 建立的架构绑定函数或视图。 1 = 架构绑定 |
IsSystemTable | 表 | 系统表。 1 = True |
IsTable | 表 | 表。 1 = True |
IsTableFunction | 函数 | 表值函数。 1 = 表值 |
IsTrigger | 任何 | 触发器。 1 = True |
IsUniqueCnst | 任何 | UNIQUE 约束。 1 = True |
IsUserTable | 表 | 用户定义的表。 1 = True |
IsView | 视图 | 视图。 1 = True |
OwnerId | 任何 | 对象的全部者。 Nonnull = 对象全部者的数据库用户 ID。 |
TableDeleteTrigger | 表 | 表有 DELETE 触发器。 >1 = 给定类型的第一个触发器的 ID。 |
TableDeleteTriggerCount | 表 | 表具备指定数目的 DELETE 触发器。 >1 = 给定类型的第一个触发器的 ID。 |
TableFullTextBackgroundUpdateIndexOn | 表 | 表已启用全文后台更新索引。 1 = True |
TableFulltextCatalogId | 表 | 表的全文索引数据所驻留的全文目录的 ID。 Nonzero = 全文目录 ID,它与标识全文索引表中行的惟一索引相关。 |
TableFullTextChangeTrackingOn | 表 | 表已启用全文更改跟踪。 1 = True |
TableFulltextKeyColumn | 表 | 与某个单列惟一索引相关联的列 ID,这个单列惟一索引参与全文索引定义。 0 = 表不是全文索引的。 |
TableFullTextPopulateStatus | 表 | 0 = 不填充 1 = 彻底填充 2 = 增量填充 |
TableHasActiveFulltextIndex | 表 | 表具备一个活动的全文索引。 1 = True |
TableHasCheckCnst | 表 | 表具备 CHECK 约束。 1 = True |
TableHasClustIndex | 表 | 表具备汇集索引。 1 = True |
TableHasDefaultCnst | 表 | 表具备 DEFAULT 约束。 1 = True |
TableHasDeleteTrigger | 表 | 表具备 DELETE 触发器。 1 = True |
TableHasForeignKey | 表 | 表具备 FOREIGN KEY 约束。 1 = True |
TableHasForeignRef | 表 | 表由 FOREIGN KEY 约束引用。 1 = True |
TableHasIdentity | 表 | 表具备标识列。 1 = True |
TableHasIndex | 表 | 表具备一个任何类型的索引。 1 = True |
TableHasInsertTrigger | 表 | 对象具备 Insert 触发器。 1 = True |
TableHasNonclustIndex | 表 | 表具备非汇集索引。 1 = True |
TableHasPrimaryKey | 表 | 表具备主键。 1 = True |
TableHasRowGuidCol | 表 | 对于 uniqueidentifier列,表具备 ROWGUIDCOL。 1 = True |
TableHasTextImage | 表 | 表具备 text 列。 1 = True |
TableHasTimestamp | 表 | 表具备 timestamp列。 1 = True |
TableHasUniqueCnst | 表 | 表具备 UNIQUE 约束。 1 = True |
TableHasUpdateTrigger | 表 | 对象具备 Update 触发器。 1 = True |
TableInsertTrigger | 表 | 表具备 INSERT 触发器。 >1 = 给定类型的第一个触发器的 ID。 |
TableInsertTriggerCount | 表 | 表具备指定数目的 INSERT 触发器。 >1 = 给定类型的第一个触发器的 ID。 |
TableIsFake | 表 | 表不是真实的。根据须要 SQL Server 对其进行内部具体化。 1 = True |
TableIsPinned | 表 | 驻留表以将其保留在数据高速缓存中。 1 = True |
TableTextInRowLimit | 表 | text in row 所容许的最大字节数,若是没有设置 text in row 选项则为 0。 |
TableUpdateTrigger | 表 | 表具备 UPDATE 触发器。 >1 = 给定类型的第一个触发器的 ID。 |
TableUpdateTriggerCount | 表 | 表具备指定数目的 UPDATE 触发器。 >1 = 给定类型的第一个触发器的 ID。 |
int
OBJECTPROPERTY(view_id,'IsIndexable') 可能会耗费大量的计算机资源,这是由于对 IsIndexable 属性的评估须要分析视图定义、进行规范化以及部分优化。
当至少添加了表的一列以用于索引时,OBJECTPROPERTY(table_id, 'TableHasActiveFulltextIndex') 将返回"1"(True)。只要添加了用于索引的第一列后,全文索引便可用于填充。
当除去索引中的最后一列时,索引变成非活动。
若是某些索引键需求条件得不到知足,那么实际建立索引仍然可能会失败。详细信息请参见 CREATE INDEX。
下面的示例测试 authors 是否为一个表。
IF OBJECTPROPERTY ( object_id('authors'),'ISTABLE') = 1 print 'Authors is a table' ELSE IF OBJECTPROPERTY ( object_id('authors'),'ISTABLE') = 0 print 'Authors is not a table' ELSE IF OBJECTPROPERTY ( object_id('authors'),'ISTABLE') IS NULL print 'ERROR: Authors is not an object'
下面的示例测试是否在 authors 表上启用了 text in row 选项,以便 text、ntext 或 p_w_picpath 数据能够存储在它的数据行内。
USE pubs SELECT OBJECTPROPERTY(OBJECT_ID('authors'),'TableTextInRowLimit')
结果集显示在表上没有启用 text in row。
----- 0
下面的示例测试用户定义的标量值函数 fn_CubicVolume 是否具备肯定性,该函数返回小数。
CREATE FUNCTION fn_CubicVolume -- Input dimensions in centimeters. (@CubeLength decimal(4,1), @CubeWidth decimal(4,1), @CubeHeight decimal(4,1) ) RETURNS decimal(12,3) -- Cubic Centimeters. WITH SCHEMABINDING AS BEGIN RETURN ( @CubeLength * @CubeWidth * @CubeHeight ) END --Is it a deterministic function? SELECT OBJECTPROPERTY(OBJECT_ID('fn_CubicVolume'), 'IsDeterministic')
结果集显示 fn_CubicVolume 是肯定性函数。
----- 1