OBJECTPROPERTY函数使用
更新日期: 2007 年 2 月 1 日
返回当前数据库中架构范围内的对象的有关信息。有关架构范围内对象的列表,请参阅 sys.objects (Transact-SQL)。不能将此函数用于不属于架构范围内的对象,如数据定义语言 (DDL) 触发器和事件通知。
Transact-SQL 语法约定
OBJECTPROPERTY ( id , property )
是表示当前数据库中对象 ID 的表达式。id 的数据类型为 int,并假定为当前数据库上下文中的架构范围内的对象。
property
一个表达式,提供 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
Procedure
启动过程。
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 = 不确定
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 2005 过程中创建的对象。
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
View
视图。
1 = True
0 = False
OwnerId
架构范围内的任何对象
对象的所有者。
Nonnull = 对象所有者的数据库用户 ID。
TableDeleteTrigger
表
表具有 DELETE 触发器。
>1 = 指定类型的第一个触发器的 ID。
TableDeleteTriggerCount
表
表具有指定数目的 DELETE 触发器。
>0 = DELETE 触发器数目。
TableFullTextBackgroundUpdateIndexOn
表
表已启用全文后台更新索引(自动更改跟踪)。
1 = TRUE
0 = FALSE
TableFulltextCatalogId
表
表的全文索引数据所在的全文目录的 ID。
非零 = 全文目录 ID,它与全文索引表中标识行的唯一索引相关。
0 = 表没有全文索引。
TableFulltextChangeTrackingOn
表
表已启用全文更改跟踪。
1 = TRUE
0 = FALSE
TableFulltextDocsProcessed
表
自开始全文索引以来所处理的行数。在为进行全文搜索而正在编制索引的表中,将一个行的所有列视为要编制索引的文档的一部分。
0 = 没有完成的活动爬网或全文索引。
> 0 = 以下选项之一:
自从开始完整、增量或手动更改跟踪填充以来所处理的文档数。
自从执行以下操作以来所处理的行数:启用具有后台更新索引填充功能的更改跟踪、更改全文索引架构、重建全文目录或重新启动 SQL Server 的实例等。
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
有关 vardecimal 存储格式的详细信息,请参阅。
TableInsertTrigger
表
表具有 INSERT 触发器。
>1 = 指定类型的第一个触发器的 ID。
TableInsertTriggerCount
表
表有指定数目的 INSERT 触发器。
>0 = INSERT 触发器的个数。
TableIsFake
表
表不是真实的表。它将由 SQL Server 2005 数据库引擎根据需要在内部进行具体化。
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 触发器的个数。
int
出现错误时或调用方没有权限查看对象时,将返回 NULL。
在 SQL Server 2005 中,用户只能查看自己拥有或已被授予权限的安全对象的元数据。这意味着,如果用户对对象没有任何权限,则元数据生成的内置函数(如 OBJECTPROPERTY)可能返回 NULL。有关详细信息,请参阅和。
数据库引擎假定 object_id 位于当前数据库上下文中。引用另一个数据库中的 object_id 的查询将返回 NULL 或返回不正确的结果。例如,在下面的查询中,当前数据库上下文为 master 数据库。数据库引擎将尽量返回该数据库(而不是在查询中指定的数据库)中指定的 object_id 的属性值。由于视图 vEmployee 不在 master 数据库中,该查询将返回不正确的结果。
USE master; GO SELECT OBJECTPROPERTY(OBJECT_ID(N'AdventureWorks.HumanResources.vEmployee'), 'IsView'); GO
OBJECTPROPERTY(view_id, 'IsIndexable')可能会耗费大量的计算机资源,这是因为处理 IsIndexable 属性需要分析视图定义、规范化和局部优化。尽管 IsIndexable 属性可以标识出能编制索引的表或视图,但在实际创建索引时,如果不能满足某些索引键要求,创建过程仍然可能会失败。有关详细信息,请参阅 。
如果至少添加了一个表列用于索引,则 OBJECTPROPERTY(table_id, 'TableHasActiveFulltextIndex')将返回值 1 (true)。只要添加了用于索引的第一列后,全文索引即可用于填充。
创建表后,表的元数据中 QUOTED IDENTIFIER 选项始终是 ON,即使在创建表时将该选项设置为 OFF。因此,OBJECTPROPERTY(table_id, 'IsQuotedIdentOn')将始终返回值 1 (true)。
A. 验证某个对象是表
以下示例将测试 UnitMeasure 是否为 AdventureWorks 数据库中的表。
USE AdventureWorks; 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)是不是一个确定性函数。
USE AdventureWorks; GO SELECT OBJECTPROPERTY(OBJECT_ID('dbo.ufnGetProductDealerPrice'), 'IsDeterministic'); GO
结果集显示 ufnGetProductDealerPrice 是一个确定性函数。
----- 0
C. 查找属于特定架构的对象
以下示例使用 SchemaId 属性返回属于架构 Production 的所有对象。
USE AdventureWorks; GO SELECT name, object_id, type_desc FROM sys.objects WHERE OBJECTPROPERTY(object_id, N'SchemaId') = SCHEMA_ID(N'Production') ORDER BY type_desc, name; GO
参考
COLUMNPROPERTY (Transact-SQL)
元数据函数 (Transact-SQL)
OBJECTPROPERTYEX (Transact-SQL)
ALTER AUTHORIZATION (Transact-SQL)
TYPEPROPERTY (Transact-SQL)
sys.objects (Transact-SQL)
其他资源
用户架构分离
帮助和信息
获取 SQL Server 2005 帮助
转载于:https://www.cnblogs.com/greateast/archive/2007/07/31/837312.html
OBJECTPROPERTY函数使用相关推荐
- SQL Server 2005 用户自定义函数
(<SQL Server 2005 编程入门经典> 第13章) 用户自定义函数和存储过程非常相似,但它们也有一些行为和能力的区别. 13.1 UDF的定义 用户自定义函数是有序的T-SQL ...
- SQL2005中的XXproperty() 函数归纳
在使用SQL2005的时候经常会碰到XXproperty()的函数,现在归纳一下,有些函数比较重要 1.serverproperty 作用:返回有关服务器实例的属性信息. 实例: SELECT CON ...
- Sql Server常用函数及技巧
使用Sql Server好长时间了,今天特别想总结一下,算是回顾吧! 总结: 其实很多技巧,都是基于SQL Server自带的System Views,System Stored Procedures ...
- 四、物理优化(2)索引视图
一.视图的概念 1. 虚拟表 SQL Server中的视图是一个虚拟表,其内容由查询定义.同真实的表一样,视图包含一系列带有名称的列和行数据.但是,视图并不在数据库中以存储的数据值集形式存在.行和列数 ...
- SQL Server中的标识列
一.标识列的定义以及特点 SQL Server中的标识列又称标识符列,习惯上又叫自增列. 该种列具有以下三种特点: 1.列的数据类型为不带小数的数值类型 2.在进行插入(Insert)操作时,该列的值 ...
- 关于SQL Server数据库中的标识列
2019独角兽企业重金招聘Python工程师标准>>> 一.标识列的定义以及特点 SQL Server中的标识列又称标识符列,习惯上又叫自增列. 该种列具有以下三种特点: 1.列的数 ...
- SQL SERVER重置自动编号列(标识列)
为什么80%的码农都做不了架构师?>>> 两种方法: 一种是用Truncate TRUNCATE TABLE name 可以删除表内所有值并重置标识值 二是用DBCC CHEC ...
- SqlServer标识列
SqlServer标识列 2011-03-22 09:41:09| 分类: SqlServer | 标签: |字号大中小 订阅 收藏这个,非常详细 一.标识列的定义以及特点 SQL Server中 ...
- sqlserver dba
select * from sys.databases --查看有关数据库文件的信息 select * from sys.database_files; --查看有关数据库组的信息. select ...
最新文章
- Flask-hello程序
- Asp中隐藏下载地址
- POJ 1185 炮兵阵地 状压dp
- priority_queue(优先队列)的简单构造与用法
- 从KPI到OKR,高阶产品人如何推动业务高速增长
- pcl之将QVTKWidget添加到QtCreator
- 苹果mac微软windows远程连接工具:microsoft remote desktop
- html做群聊通讯方法,微信如何发起群聊邀请(微信群链接生成教程)
- SAP ABAP ZBA_R003 查询用户下的角色里的公司
- 大多数的愤怒源于自己的无知——《Excel受保护视图》
- axios get怎么还会显示跨域_axios 跨域问题的解决 (接口 Phal 框架)
- AICON分论坛 | 昇思MindSpore探索人工智能发展新路径
- 目标管理:SMART原则
- Eclipse使用教程1
- 我喜欢的爱豆竟然在赛博朋克空间跳舞,怎么实现的?
- 华为平板当电脑扩展屏:Wired XDisplay
- 如何提升机器人的回环检测能力?
- 【C语言基础05】循环结构程序设计(含经典代码解析)
- 直播带货开发,获取这个礼拜的开始、时间
- 手机屏幕反转尺寸_如何在Android手机的屏幕上反转颜色
热门文章
- 文本数据标注工具doccano【介绍最详细的一遍文章】
- 科大讯飞2019机械核心部件寿命预测,亚军方案
- flask ajax 文件上传,使用ajax上传Python flask文件请求.files空的
- 第一范式转化为第二范式_深度解读《中国智能经济发展白皮书》:AI为核心驱动力,百度给出智能范式...
- es文件浏览器怎么用_python爬虫入门:什么是爬虫,怎么玩爬虫?
- js变量显示在html中_PythonDjango+JS+Ajax实现网页采集并动态显示PLC变量
- OSChina 周二乱弹 —— 加班的代码不要枉费了我的童子功
- 直播预告 | Rainbond与Service Mesh微服务架构
- Apache 的 httpd.conf 详解(很实用)
- Mongodb的安装使用