设为首页 收藏本站
查看: 787|回复: 0

[经验分享] SQL SERVER OBJECTPROPERTY()函数的用法

[复制链接]

尚未签到

发表于 2018-10-14 08:30:11 | 显示全部楼层 |阅读模式
OBJECTPROPERTY
  返回当前数据库中对象的有关信息。
语法
  OBJECTPROPERTY ( id , property )
参数
  id
  一个表达式,包含当前数据库中某个对象的>id 的数据类型是 int
  Property
  一个表达式,包含针对由 id 指定的对象将要返回的信息。Property 可以是下面这些值中的一个。
  说明  除非加以注释,否则,如果 property 是无效的属性名,则返回 NULL。
属性名称对象类型描述和返回的值CnstIsClustKey约束带有聚集索引的主键。  1 = True
  0 = False
CnstIsColumn约束COLUMN 约束。  1 = True
  0 = False
CnstIsDeleteCascade约束带有 ON DELETE CASCADE 选项的外键约束。CnstIsDisabled约束禁用的约束。  1 = True
  0 = False
CnstIsNonclustKey约束带有非聚集索引的主键。  1 = True
  0 = False
CnstIsNotTrusted约束启用约束时未检查现有行,所以可能不是所有行都受约束的控制。  1 = True
  0 = False
CnstIsNotRepl约束使用 NOT FOR REPLICATION 关键字定义约束。CnstIsUpdateCascade约束带有 ON UPDATE CASCADE 选项的外键约束。ExecIsAfterTrigger触发器AFTER 触发器。ExecIsAnsiNullsOn过程、触发器、视图创建时的 ANSI_NULLS 设置。  1 = True
  0 = False
ExecIsDeleteTrigger触发器DELETE 触发器。  1 = True
  0 = False
ExecIsFirstDeleteTrigger触发器对表执行 DELETE 时触发的第一个触发器。ExecIsFirstInsertTrigger触发器对表执行 INSERT 时触发的第一个触发器。ExecIsFirstUpdateTrigger触发器对表执行 UPDATE 时触发的第一个触发器。ExecIsInsertTrigger触发器INSERT 触发器。  1 = True
  0 = False
ExecIsInsteadOfTrigger触发器INSTEAD OF 触发器。ExecIsLastDeleteTrigger触发器对表执行 DELETE 时触发的最后一个触发器。ExecIsLastInsertTrigger触发器对表执行 INSERT 时触发的最后一个触发器。ExecIsLastUpdateTrigger触发器对表执行 UPDATE 时触发的最后一个触发器。ExecIsQuotedIdentOn过程、触发器、视图创建时的 QUOTED_IDENTIFIER 设置。  1 = True
  0 = False
ExecIsStartup过程启动过程。  1 = True
  0 = False
ExecIsTriggerDisabled触发器禁用的触发器。  1 = True
  0 = False
ExecIsUpdateTrigger触发器UPDATE 触发器。  1 = True
  0 = False
HasAfterTrigger表,视图表或视图具有 AFTER 触发器。  1 = True
  0 = False
HasInsertTrigger表,视图表或视图具有 INSERT 触发器。  1 = True
  0 = False
HasInsteadOfTrigger表、视图表或视图具有 INSTEAD OF 触发器。  1 = True
  0 = False
HasUpdateTrigger表、视图表或视图具有 UPDATE 触发器。  1 = True
  0 = False
IsAnsiNullsOn函数、过程、表、触发器、视图指定表的 ANSI NULLS 选项设置为 ON,表示所有与空值的比较都取值为 UNKNOWN。只要表存在,该设置就应用于表定义中的所有表达式,包括计算列和约束。  1 = ON
  0 = OFF
IsCheckCnst任何CHECK 约束。  1 = True
  0 = False
IsConstraint任何约束。  1 = True
  0 = False
IsDefault任何绑定的默认值。  1 = True
  0 = False
IsDefaultCnst任何DEFAULT 约束。  1 = True
  0 = False
IsDeterministic函数、视图函数的确定性属性。只适用于标量值及表值函数。  1 = 可确定的
  0 = 不可确定的

  NULL = 不是标量值或表值函数,或者是无效的对象>IsExecuted任何指定执行该对象的方式(视图、过程或触发器)。  1 = True
  0 = False
IsExtendedProc任何扩展过程。  1 = True
  0 = False
IsForeignKey任何FOREIGN KEY 约束。  1 = True
  0 = False
IsIndexed表、视图带有索引的表或视图。IsIndexable表、视图可以创建索引的表或视图。IsInlineFunction函数内嵌函数。  1 = 内嵌函数
  0 = 非内嵌函数

  NULL = 不是函数,或者是无效的对象>IsMSShipped任何在安装 Microsoft SQL Server 2000 的过程中创建的对象。  1 = True
  0 = False
IsPrimaryKey任何PRIMARY KEY 约束。  1 = True
  0 = False
IsProcedure任何过程。  1 = True
  0 = False
IsQuotedIdentOn函数、过程、表、触发器、视图指定表的被引用标识符设置为 ON,表示在表定义所涉及的所有表达式中,双引号标记分隔标识符。  1 = ON
  0 = OFF
IsReplProc任何复制过程。  1 = True
  0 = False
IsRule任何绑定的规则。  1 = True
  0 = False
IsScalarFunction函数标量值函数。  1 = 标量值
  0 = 表值

  NULL = 不是函数,或者是无效的对象>IsSchemaBound函数,视图使用 SCHEMABINDING 创建的架构绑定函数或视图。  1 = 架构绑定
  0 = 非架构绑定

  NULL = 不是函数或视图,或者是无效的对象>IsSystemTable表系统表。  1 = True
  0 = False
IsTable表表。  1 = True
  0 = False
IsTableFunction函数表值函数。  1 = 表值
  0 = 标量值

  NULL = 不是函数,或者是无效的对象>IsTrigger任何触发器。  1 = True
  0 = False
IsUniqueCnst任何UNIQUE 约束。  1 = True
  0 = False
IsUserTable表用户定义的表。  1 = True
  0 = False
IsView视图视图。  1 = True
  0 = False
OwnerId任何对象的所有者。
  Nonnull = 对象所有者的数据库用户>  NULL = 无效的输入。
TableDeleteTrigger表表有 DELETE 触发器。
  >1 = 给定类型的第一个触发器的>TableDeleteTriggerCount表表具有指定数目的 DELETE 触发器。  >1 = 给定类型的第一个触发器的>  NULL = 无效的输入。
TableFullTextBackgroundUpdateIndexOn表表已启用全文后台更新索引。  1 = True
  0 = False
TableFulltextCatalogId表表的全文索引数据所驻留的全文目录的>Nonzero = 全文目录>  0 = 表不是全文索引的。
TableFullTextChangeTrackingOn表表已启用全文更改跟踪。  1 = True
  0 = False
TableFulltextKeyColumn表与某个单列唯一索引相关联的列>0 = 表不是全文索引的。
TableFullTextPopulateStatus表0 = 不填充  1 = 完全填充
  2 = 增量填充
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
  NULL = 无效的输入。
TableHasNonclustIndex表表具有非聚集索引。  1 = True
  0 = False
TableHasPrimaryKey表表具有主键。  1 = True
  0 = False
TableHasRowGuidCol表对于 uniqueidentifier列,表具有 ROWGUIDCOL。  1 = True
  0 = False
TableHasTextImage表表具有 text 列。  1 = True
  0 = False
TableHasTimestamp表表具有 timestamp列。  1 = True
  0 = False
TableHasUniqueCnst表表具有 UNIQUE 约束。  1 = True
  0 = False
TableHasUpdateTrigger表对象具有 Update 触发器。  1 = True
  0 = False
TableInsertTrigger表表具有 INSERT 触发器。
  >1 = 给定类型的第一个触发器的>TableInsertTriggerCount表表具有指定数目的 INSERT 触发器。
  >1 = 给定类型的第一个触发器的>TableIsFake表表不是真实的。根据需要 SQL Server 对其进行内部具体化。  1 = True
  0 = False
TableIsPinned表驻留表以将其保留在数据高速缓存中。  1 = True
  0 = False
TableTextInRowLimittext in row 所允许的最大字节数,如果没有设置 text in row 选项则为 0。TableUpdateTrigger表表具有 UPDATE 触发器。
  >1 = 给定类型的第一个触发器的>TableUpdateTriggerCount表表具有指定数目的 UPDATE 触发器。
  >1 = 给定类型的第一个触发器的>返回类型
  int
注释
  OBJECTPROPERTY(view_id,'IsIndexable') 可能会耗费大量的计算机资源,这是因为对 IsIndexable 属性的评估需要分析视图定义、进行规范化以及部分优化。
  当至少添加了表的一列以用于索引时,OBJECTPROPERTY(table_id, 'TableHasActiveFulltextIndex') 将返回"1"(True)。只要添加了用于索引的第一列后,全文索引即可用于填充。
  当除去索引中的最后一列时,索引变成非活动。
  如果某些索引键需求条件得不到满足,那么实际创建索引仍然可能会失败。详细信息请参见 CREATE INDEX。
示例
A. 查明 authors 是否为一个表
  下面的示例测试 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'
B. 确定是否在表上启用了 text in row
  下面的示例测试是否在 authors 表上启用了 text in row 选项,以便 textntextimage 数据可以存储在它的数据行内。
USE pubs  
SELECT OBJECTPROPERTY(OBJECT_ID('authors'),'TableTextInRowLimit')
  结果集显示在表上没有启用 text in row
-----  
0
C. 确定用户定义的标量值函数是否具有确定性
  下面的示例测试用户定义的标量值函数 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



运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-621320-1-1.html 上篇帖子: XP系统上安装SQL Server 2000-StudyEveryday 下篇帖子: SQL Server 2005自动异机备份
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表