2012-02-21 58 views

回答

4

OBJECT_ID用于识别系统基表中唯一的对象。

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

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

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

它创建仍保存在sys.sysschobjs这些

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

非架构范围内的对象元数据时,但在sys.objects视图显示不出来是尝试,并指定一个架构中的错误。