OBJECT_ID错误的返回值?

时间:2016-11-09 10:02:24

标签: sql sql-server tsql ssms

  

在Microsoft SQL Server 2014(SP2-CU1)上(KB3178925) - 12.0.5511.0(X64)       2016年8月19日14:32:30       版权所有(c)Microsoft Corporation       Windows NT 6.1(Build 7601:Service Pack 1)(Hypervisor)上的企业版(64位)

sp_UpdateStats实际上不存在,查询:

SELECT OBJECT_ID('sp_UpdateStats')

返回值:-838816646

select * FROM sys.objects WHERE name='sp_UpdateStats'

返回0行...

怎么可能? OBJECT_ID函数中的错误?

修改

很高兴知道ID -838816646来自sys.sysobjects或sys.system_objects,但问题更精确的是:

  • 为什么程序出现在sys.sysobjects和sys.system_objects中,而不是出现在我们应该使用的新视图的sys.objects中?

2 个答案:

答案 0 :(得分:2)

它将存储在Master数据库sysobjects视图

select * FROM master.sys.sysobjects WHERE name='sp_UpdateStats'

结果:-838816646

答案 1 :(得分:1)

使用sys.all_objects包含系统对象。

SELECT *
FROM   sys.all_objects
WHERE  NAME = 'sp_UpdateStats' 

此定义实际上在资源数据库中。