存储过程不存在,或者存在?

bev*_*qua 5 c# sql-server

我遇到了问题:

我有一个数据库连接,我在其上运行存储过程.这个相同的连接用于更早地创建所述存储过程.

当我尝试调用给定的存储过程时,稍后,我收到以下消息:

找不到存储过程'dbo.yaf_prov_upgrade'.

问题是它确实存在于数据库中.而且还有它出现在SQL Server Profiler上的事实.

RPC:已完成exec [dbo].[yaf_prov_upgrade] @ PreviousVersion = 46,@ NewVersion = 46 .Net SqlClient数据提供者Nico Matrix\Nico

我想知道特定查询会抛出这样的异常的原因是什么,即使它存在,它被调用,并且调用到达数据库.

它不能成为连接的问题,因为它已经执行了其他存储过程.它不是程序的问题,因为它确实存在,实际上是完全相同的应用程序,相同的网页,创建它并将其放在那里.

更新:忘了提到我使用了集成安全性,我确实在数据库上使用应用程序连接的同一用户运行SP,我运行它没有问题.

那么什么有呢?

gbn*_*gbn 15

您的RPC仅完成意味着提交给SQL Server的批处理正确并已完成.这并不意味着存储过程运行并执行正常.

是(不争论,检查)中的一种:

  • 错误的权限
  • 错误的数据库环境
  • 错误的服务器
  • stored proc位于不同的数据库中

为了确保这东西都是一样的

SELECT
   @@SERVERNAME, 
   SUSER_SNAME(), 
   DB_NAME(), 
   USER_NAME(), 
   OBJECT_ID('dbo.yaf_prov_upgrade')
Run Code Online (Sandbox Code Playgroud)

如果存储过程在该数据库中不存在或您没有权限,则OBJECT_ID将为NULL .