• OBJECTPROPERTY用法整理


    OBJECTPROPERTY用法整理

    分类: 系统表与表结构 数据库管理维护
     

    目录(?)[+]

     

    语法

     
    OBJECTPROPERTY ( id , property ) 

    参数

    id

    是表示当前数据库中对象 ID 的表达式。id 的数据类型为 int,并假定为当前数据库上下文中的架构范围内的对象。

    property

    一个表达式,提供 id 指定的对象的返回信息。property 可以是下列值之一:

    注意:

    除非另外注明,否则出现以下情况时,将返回 NULL:property 不是有效的属性名称,id 不是有效的对象 ID,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 = 以下选项之一:

    • 自从开始完整、增量或手动更改跟踪填充以来,由插入或更新操作处理的文档数。
    • 自从执行以下操作以来由插入或更新操作处理的行数:启用具有后台更新索引填充功能的更改跟踪、更改全文索引架构、重建全文目录或重新启动 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

    表具有 textntext 或 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

    有关详细信息,请参阅使用列集。

    返回类型

    int

    异常

    出现错误时或调用方没有权限查看对象时,将返回 NULL。

    用户只能查看符合如下条件的安全对象的元数据:该安全对象为该用户所有,或已授予该用户对该安全对象的权限。这意味着,如果用户对对象没有任何权限,则元数据生成的内置函数(如 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 属性可以标识出能编制索引的表或视图,但在实际创建索引时,如果不能满足某些索引键要求,创建过程仍然可能会失败。有关详细信息,请参阅 CREATE INDEX (Transact-SQL)。

    如果至少添加了一个表列用于索引,则 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
  • 相关阅读:
    导出表结构语句
    closeChannel: close the connection to remote address[] result: true
    spingboot使用rabbitmq
    服务器很卡问题排查
    docker-compose安装nginx
    Docker方式安装ShowDoc
    "docker build" requires exactly 1 argument
    Intellij IDEA常用快捷键介绍 Intellij IDEA快捷键大全汇总
    IDEA 2018 3.4 激活破解方法
    jpress:v3.2.5的docker-compose安装
  • 原文地址:https://www.cnblogs.com/guanshan/p/guan127.html
Copyright © 2020-2023  润新知