"Could not find stored procedure <Proc Name Here>"



我正在尝试将控件添加到我的页面。我正在跟随巫师。步骤1,我选择我的连接字符串。连接有效,无错误消息。步骤2,我选择"指定自定义SQL语句或存储过程"单选按钮。步骤3,在"选择"选项卡中,我单击"存储的生产"广播按钮,然后选择我要使用的存储过程。我将其视为确认连接字符串正在工作。步骤4,我按"测试查询"按钮。

出现一个弹出窗口,并带有"执行查询的错误"。请检查命令的语法,如果存在,则参数的类型和值,并确保它们正确。找不到存储过程。<<<<<<<<<<<<<<<<<<<</p>

我已经在SSM中测试了该过程,并且有效。我采用了存储过程中的查询字符串,并将收音机从步骤3更改为" SQL语句",然后将字符串粘贴到框中。该声明工作正常。

我还将连接字符串中指定的登录的权限更改为服务器上的相同权限。(完整的管理权!)没有纠正问题。我在论坛中只发现了有关此问题的一些问题,他们都指出了许可问题,但是我在设定权限时就排除了这一点。

当我穿过向导时,向导可以找到该过程,但是当我测试时找不到它。

我希望有人可以将我指向正确的方向...谢谢!

*编辑 * 只是为了扩展 @blackjacketmack的答案:

当我使用向导创建SQLDATASOURCE并从列表中选择存储过程时,即使VS在运行时默认为DBO架构,即使它显示每个架构中的所有Sprocs。(我通过更改Sproc开始进行DBO并进行测试的模式来验证了这一点。结果没有错误返回。)在向导中,我看不到更改模式的任何选项。如果我单击" SQL语句"单选按钮并键入Execute [App001]。[MyStoredProcedure],它可以很好地工作。我确实尝试了@otaku推荐的赠款执行,但这无效。我还将连接字符串中指定的用户的默认架构更改为[app001],无用。因此,当使用向导中的下拉列表时,这似乎是一个问题。手动输入数据,以使模式可以完全合格!

确保您正在运行的应用程序在数据库对象上具有适当的赠款执行。有时,它们与数据库角色有关,例如以下存储过程需要执行权限:

GRANT EXECUTE ON ][dbo].[MyStoreProc] TO U_ExecuteProcs

使用架构限定您的过程,如果Proc具有架构'app001',如您在评论中所示,请确保通过SQL通过APP001.YourStoredProcedureName

使用profiler!解决此问题的一种好方法是在您的SQL上运行一个Profiler ... MS Profiler,或者我们使用http://anjlab.com/en/projects/OpenSource/sqlprofiler曾经是免费的。基本上,您将准确地看到您的应用程序发送的SQL以及其发送给谁的登录名。

,如果您按照您的指示给予了管理权限,那么我不会仅仅因为它们倾向于不受欢迎而定义太多特定对象的权限。

我认为定义存储过程中的执行上下文将解决问题,以下是链接:

http://technet.microsoft.com/en-us/library/ms188354.aspx

最新更新