这很奇怪。
我打开了我的 Profiler,它显然表明调用了一个存储过程。我打开数据库和 SP 列表,但 SP 不存在。但是,还有另一个名称相同的 SP,只是它的前缀为“x”
SQL Server 2005 是否出于安全目的将 SP 名称映射到不同的名称?
编辑:我发现它是同义词,不管它是什么。
这很奇怪。
我打开了我的 Profiler,它显然表明调用了一个存储过程。我打开数据库和 SP 列表,但 SP 不存在。但是,还有另一个名称相同的 SP,只是它的前缀为“x”
SQL Server 2005 是否出于安全目的将 SP 名称映射到不同的名称?
编辑:我发现它是同义词,不管它是什么。
通常,如果您知道某个对象存在是因为它已在查询中使用,但您无法在 Management Studio 的对象树中找到它,则可以执行此操作来查找它。
select *
from sys.objects
where name = 'THE_NAME_YOU_WANT'
我刚刚检查过,它适用于同义词。
可能是愚蠢的问题,但以防万一……你刷新了 SP 列表了吗?您是否检查过不同所有者下的该名称的存储过程?如果您在未指定所有者的情况下创建了存储过程,那么它可能位于您拥有的列表中(或者,如果列表被过滤为仅“dbo”,则根本不存在)。
您可能无权查看数据库中的所有对象
除了前面的答案,它也可能在“系统存储过程”下,如果存储过程的名称以“sp_”开头,它也可能在主数据库中。
存储过程将位于您在创建存储过程时选择的数据库中。因此,在从中提取数据的数据库中搜索,否则它将在主数据库中。如果您仍然无法找到,那么第一个数字解决方案是最好的。IE
select * from sys.objects where name = 'name of stored procedure'