OBJECT_ID在SQL Server中做了什么?

时间:2012-02-21 05:54:00

标签: sql sql-server tsql sql-server-2005 object-identity

我尝试使用OBJECT_ID并在MSDN中找到the following entry

  

"返回架构范围对象的数据库对象标识号。"

什么是数据库对象标识号以及什么是架构范围对象。好像我比初始更困惑。

1 个答案:

答案 0 :(得分: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视图中。