OBJECTPROPERTYEX (Transact-SQL)

更新日期: 2006 年 12 月 12 日

返回当前数据库中架构范围内的对象的有关信息。有关这些对象的列表,请参阅 sys.objects (Transact-SQL)。OBJECTPROPERTYEX 不能用于非架构范围内的对象,如数据定义语言 (DDL) 触发器和事件通知。

主题链接图标Transact-SQL 语法约定

语法

 OBJECTPROPERTYEX ( id , property )

参数

  • id
    是表示当前数据库中对象 ID 的表达式。id 的数据类型为 int,并假定为当前数据库上下文中的架构范围内的对象。
  • property
    一个表达式,包含要为 ID 所指定的对象返回的信息。返回类型为 sql_variant。下表显示了各属性值的基本数据类型。

    ms188390.note(zh-cn,SQL.90).gif注意:
    除非另行说明,否则当 property 不是有效属性名、id 是不是有效的对象 ID、id 是指定的 property 不支持的对象类型或调用方没有权限查看该对象的元数据时,将返回 NULL。

    属性名称

返回类型

sql_variant

异常

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

在 SQL Server 2005 中,用户只能查看其拥有的安全对象的元数据,或者已对其授予权限的安全对象的元数据。也就是说,如果用户对该对象没有任何权限,则某些会产生元数据的内置函数(如 OBJECTPROPERTYEX)可能返回 NULL。有关详细信息,请参阅元数据可见性配置元数据可见性故障排除

备注

数据库引擎假定 object_id 位于当前数据库上下文中。引用另一个数据库中的 object_id 的查询将返回 NULL 或返回不正确的结果。例如,在下面的查询中,当前数据库上下文为 master 数据库。数据库引擎将尝试从该数据库而不是查询所指定的数据库中返回指定的 object_id 的属性值。由于视图 vEmployee 不在 master 数据库中,该查询将返回不正确的结果。

USE master;
GO
SELECT OBJECTPROPERTYEX(OBJECT_ID(N'AdventureWorks.HumanResources.vEmployee'), 'IsView');
GO

OBJECTPROPERTY(view_id**,'IsIndexable'**)可能会耗费大量的计算机资源,这是因为处理 IsIndexable 属性需要分析视图定义、规范化和局部优化。尽管 IsIndexable 属性可以标识出能编制索引的表或视图,但在实际创建索引时,如果不能满足某些索引键要求,创建过程仍然可能会失败。有关详细信息,请参阅 CREATE INDEX (Transact-SQL)

如果至少添加了一个表列用于索引,则 OBJECTPROPERTY(table_id**,'TableHasActiveFulltextIndex'**)将返回值 1 (true)。只要添加了用于索引的第一列后,全文索引即可用于填充。

对元数据可视性的限制将应用于结果集。有关详细信息,请参阅元数据可见性配置

示例

查找对象的基类型

以下示例为 AdventureWorks 数据库中的 Employee 表创建一个 SYNONYM MyEmployeeTable,然后返回 SYNONYM 的基类型。

USE AdventureWorks;
GO
CREATE SYNONYM MyEmployeeTable FOR HumanResources.Employee;
GO
SELECT OBJECTPROPERTYEX ( object_id(N'MyEmployeeTable'), N'BaseType')AS [Base Type];
GO

结果集显示基础对象(Employee 表)的基类型是用户表。

Base Type 
-------- 
U 

B. 返回属性值

以下示例返回指定表中的 UPDATE 触发器数。

USE AdventureWorks;
GO
SELECT OBJECTPROPERTYEX(OBJECT_ID(N'HumanResources.Employee'), N'TABLEUPDATETRIGGERCOUNT');
GO

C. 查找具有 FOREIGN KEY 约束的表

以下示例使用 TableHasForeignKey 属性返回具有 FOREIGN KEY 约束的所有表。

USE AdventureWorks;
GO
SELECT name, object_id, schema_id, type_desc
FROM sys.objects 
WHERE OBJECTPROPERTYEX(object_id, N'TableHasForeignKey') = 1
ORDER BY name;
GO

请参阅

参考

CREATE SYNONYM (Transact-SQL)
元数据函数 (Transact-SQL)
OBJECT_DEFINITION (Transact-SQL)
OBJECT_ID (Transact-SQL)
OBJECT_NAME (Transact-SQL)
sys.objects (Transact-SQL)
ALTER AUTHORIZATION (Transact-SQL)
TYPEPROPERTY (Transact-SQL)

其他资源

用户架构分离

帮助和信息

获取 SQL Server 2005 帮助

更改历史记录

发布日期 历史记录

2006 年 12 月 12 日

新增内容:
  • 添加了 TableHasVarDecimalStorageFormat 属性(在 Service Pack 2 中可用)。

2006 年 7 月 17 日

新增内容:
  • 添加了“例外情况”部分。

2005 年 12 月 5 日

更改的内容:
  • 更正了 IsTableFunctionIsScalarFunction 属性的定义。
  • 修改了示例 C。