6

我正在尝试使用并在 MSDN中OBJECT_ID找到以下条目:

“返回模式范围对象的数据库对象标识号。”

什么是数据库对象标识号,什么是架构范围对象。似乎我比最初更困惑。

4

1 回答 1

4

OBJECT_ID用于在系统基表中唯一标识对象。

sys.sysschobjs它是元数据视图使用的基表 的主键,sys.objects并出现在许多其他元数据视图中。例如sys.partitions。如果您不查询这些视图,那么它就object_id不是很有用,除非在检查对象存在时使用,如下所示。

IF OBJECT_ID('T', 'U') IS NULL
     /*Table T does not exist or no permissions*/

模式范围对象是属于模式的对象(例如表、视图、存储过程)。MSDN 文章提供了 DDL 触发器中非架构范围对象的示例。

在创建这些时尝试指定架构是错误的

CREATE TRIGGER dbo.SomeTrigger /*Will Fail*/
ON DATABASE 
FOR DROP_SYNONYM
AS 
PRINT 'SomeTrigger'

非模式范围的对象元数据仍存储在视图中,sys.sysschobjs但不会显示在sys.objects视图中。

于 2012-02-21T10:48:09.283 回答