对象ID在SQL Server中的作用是什么?

对象ID在SQL Server中的作用是什么?,sql,sql-server,tsql,sql-server-2005,object-identity,Sql,Sql Server,Tsql,Sql Server 2005,Object Identity,我正在试用OBJECT\u ID的用法,可以在MSDN中找到: “返回架构范围对象的数据库对象标识号。” 什么是数据库对象标识号,什么是架构范围的对象。似乎我比初始值更困惑。对象ID用于在系统基表中唯一地标识对象 它是sys.objects元数据视图使用的sys.sysschobjs基表的主键,并出现在许多其他元数据视图中。e、 gsys.partitions。如果您不查询这些视图,那么对象\u id不是很有用,除非在检查对象是否存在时使用,如下所示 IF OBJECT_ID('T', 'U')

我正在试用
OBJECT\u ID
的用法,可以在MSDN中找到:

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


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

对象ID用于在系统基表中唯一地标识对象

它是
sys.objects
元数据视图使用的
sys.sysschobjs
基表的主键,并出现在许多其他元数据视图中。e、 g
sys.partitions
。如果您不查询这些视图,那么
对象\u 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
视图中