【发布时间】:2014-01-27 19:48:43
【问题描述】:
我正在尝试向我的页面添加一个控件。我正在跟随向导。第 1 步,我选择我的连接字符串。连接正常,没有错误消息。第 2 步,我选择“指定自定义 SQL 语句或存储过程”单选按钮。第 3 步,在“SELECT”选项卡中单击“Stored Prodedure”单选按钮,然后选择我要使用的存储过程。我将此视为连接字符串正常工作的确认。第 4 步,我按下“测试查询”按钮。
弹出消息“执行查询时出错。请检查命令的语法,如果存在,请检查参数的类型和值并确保它们正确。找不到存储过程。
我已经在 SSMS 中测试了该过程,并且可以正常工作。我获取了存储过程中的查询字符串,并将收音机从第 3 步更改为“SQL 语句”并将字符串粘贴到框中。该语句运行良好。
我还将连接字符串中指定的登录权限更改为我在服务器上拥有的相同权限。 (完全的管理员权限!)这并没有解决问题。我在论坛里只发现了几个关于这个问题的问题,都指向了权限问题,但是我在设置权限时已经排除了。
在我走向导时,向导可以找到程序,但在我测试时却找不到。
我希望有人能指出我正确的方向...谢谢!
* 编辑 * 只是为了扩展@BlackjacketMack 的答案:
当我使用向导创建 SqlDataSource 并从列表中选择存储过程时,看起来 VS 在运行时默认使用 dbo 模式,即使它显示了每个模式中的所有存储过程。 (我通过将 sproc 所在的模式更改为 dbo 并对其进行测试来验证这一点。结果返回没有错误。)在向导中,我看不到任何更改模式的选项。如果我单击“SQL 语句”单选按钮并键入 EXECUTE [APP001].[MyStoredProcedure],它会完美运行。我确实按照@otaku 的建议尝试了 GRANT EXECUTE,但这没有用。我还将连接字符串中指定的用户的默认架构更改为 [APP001] 无济于事。因此,在使用向导中的下拉菜单时,这似乎是一个问题。手动输入数据以便完全限定架构就可以了!
【问题讨论】:
-
检查架构、dbo、sde 等。确保过程和连接使用相同的模式。这就是我想到的。
-
谢谢@Jaan! sproc 有一个模式 APP001,我验证了指定的登录名是该模式的所有者。还有什么我应该做的吗?
-
据我所知,它背后没有这样的魔力,在不知道您的系统配置的情况下很难回答您的问题。如果我是你,即使我确定它们是正确的,我也会仔细检查它们,但在这种情况下隐藏着一些微小的东西。大声笑
标签: asp.net sql-server-2008 stored-procedures sqldatasource