asp.net中执行一个存储过程,该存储过程在sql2005的management studio中执行没问题,我在aspx中换成统一数据库下的其它存储过程执行也没问题。但就某个存储过程不能执行,提示如下:
找不到存储过程 'getProjectByInitletter'。
说明: 执行当前 Web 请求期间,出现未处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。
异常详细信息: System.Data.SqlClient.SqlException: 找不到存储过程 'getProjectByInitletter'。
咋回事?
------解决方案--------------------------------------------------------
确保你的存储过程是存在的,还有你的存储过程写好了,可以在数据库那边调用执行一下,看看行不行。
比如在sql server 2005中你写好了存储过程,你需要运行一下才会生成的。
------解决方案--------------------------------------------------------
仔细检查,是不是那个字母写错了,或者顺序颠倒了
------解决方案--------------------------------------------------------
数据库是传到服务器上去来的吗? 检查存储过程的架构名称。。是否有前缀
------解决方案--------------------------------------------------------
重新编译一下 试试 或者重新运行一下 存储过程
------解决方案--------------------------------------------------------
把你调用存储过程的代码贴出来....
------解决方案--------------------------------------------------------
没连错数据库吧
------解决方案--------------------------------------------------------
调用代码中 try catch 下
能抛出啥!
还不行的话 写几句代码测试下 为空的话 就不用多解释了
------解决方案--------------------------------------------------------
判断存储过程是否存在
- C# code
public static bool IsStoredProcExisting(SqlConnection conn, string procName) { bool result = false; conn.Open(); SqlCommand command = conn.CreateCommand(); command.CommandText = "SELECT name FROM sysobjects WHERE xtype = 'P' and name = @name"; command.Parameters.Add("@name", procName); object temp = command.ExecuteScalar(); result = temp != null; conn.Close(); return result; }
------解决方案--------------------------------------------------------
把代码贴出来看看
------解决方案--------------------------------------------------------
我记得如果是sql server2005 没有打补丁的情况下,存储过程不是立刻生效的,可能需要重启服务。
换数据库,或者安装补丁