我跟踪了一个存储过程,如SQL Server 2005 Profiler中所示。找不到但有效。为什么?

时间:2020-03-05 18:59:22  来源:igfitidea点击:

这很奇怪。

我打开了Profiler,它显然表明已调用存储过程。我打开了数据库和SP列表,但是SP不存在。但是,还有另一个名称相同的SP,除了它的前缀是" x"

为了安全起见,SQL Server 2005是否将SP名称映射到其他名称?

编辑:我发现这是一个同义词,无论是什么。

解决方案

回答

可能是愚蠢的问题,但以防万一...我们是否刷新了SP列表?我们是否在其他所有者下检查过该名称的存储过程?如果创建存储过程时未指定所有者,则该存储过程可能位于我们所拥有的列表中(例如,如果列表仅过滤为" dbo",则根本不会)。

回答

我们可能没有权限查看数据库中的所有对象

回答

除了前面的答案外,它还可以位于"系统存储过程"下,并且如果存储过程的名称以" sp_"开头,则它也可以位于master数据库中。

回答

通常,当我们知道某个对象因为在查询中已被使用而存在,并且我们无法在Management Studio的对象树中找到它时,可以执行此操作来找到它。

select *
from sys.objects
where name = 'THE_NAME_YOU_WANT'

我刚刚检查了一下,它可与同义词一起使用。