2

这很奇怪。

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

SQL Server 2005 是否出于安全目的将 SP 名称映射到不同的名称?

编辑:我发现它是同义词,不管它是什么。

4

5 回答 5

5

通常,如果您知道某个对象存在是因为它已在查询中使用,但您无法在 Management Studio 的对象树中找到它,则可以执行此操作来查找它。

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

我刚刚检查过,它适用于同义词。

于 2008-09-17T16:58:23.497 回答
1

可能是愚蠢的问题,但以防万一……你刷新了 SP 列表了吗?您是否检查过不同所有者下的该名称的存储过程?如果您在未指定所有者的情况下创建了存储过程,那么它可能位于您拥有的列表中(或者,如果列表被过滤为仅“dbo”,则根本不存在)。

于 2008-09-17T16:50:28.400 回答
1

您可能无权查看数据库中的所有对象

于 2008-09-17T16:50:48.087 回答
1

除了前面的答案,它也可能在“系统存储过程”下,如果存储过程的名称以“sp_”开头,它也可能在主数据库中。

于 2008-09-17T16:52:17.850 回答
1

存储过程将位于您在创建存储过程时选择的数据库中。因此,在从中提取数据的数据库中搜索,否则它将在主数据库中。如果您仍然无法找到,那么第一个数字解决方案是最好的。IE

select * from sys.objects where name = 'name of stored procedure'
于 2011-07-06T15:25:51.303 回答