“无法找到存储过程<proc name =”“here =”“>”</proc>

时间:2014-01-27 19:48:43

标签: asp.net sql-server-2008 stored-procedures sqldatasource

我正在尝试向我的页面添加控件。我正在关注向导。第1步,我选择我的连接字符串。连接有效,没有错误消息。步骤2,我选择“指定自定义SQL语句或存储过程”单选按钮。步骤3,在“SELECT”选项卡中单击“Stored Prodedure”单选按钮,然后选择我想要使用的存储过程。我认为这是连接字符串正常工作的确认。第4步,我按下“测试查询”按钮。

弹出窗口显示消息“执行查询时出错。请检查命令的语法,如果存在,参数的类型和值,确保它们是正确的。无法找到存储过程。” / p>

我在SSMS中测试了这个程序,它确实有效。我获取了存储过程中的查询字符串,并将步骤3中的无线电更改为“SQL语句”,并将该字符串粘贴到框中。声明工作得很好。

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

向导可以在我浏览向导时找到该过程,但在测试时无法找到它。

我希望有人能指出我正确的方向......谢谢!

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

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

3 个答案:

答案 0 :(得分:2)

确保您运行的应用程序对数据库对象执行了相应的授权。有时它们与数据库角色相关联,例如下面存储过程需要具有执行权限的数据库角色:

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

答案 1 :(得分:1)

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

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

答案 2 :(得分:1)

使用架构验证您的程序如果proc具有您在注释中指示的架构“APP001”,请确保传递的Sql看起来像EXEC APP001.YourStoredProcedureName

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

如果您指定了自己的管理员权限,我不会定义太多对象特定权限,因为它们往往不受维护。