【发布时间】:2015-02-06 15:09:08
【问题描述】:
我有两个数据库;一个在本地服务器中;
Oracle Database 11g Enterprise Edition Release 11.1.0.7.0 - 64bit Production
PL/SQL Release 11.1.0.7.0 - Production
"CORE 11.1.0.7.0 Production"
TNS for 64-bit Windows: Version 11.1.0.7.0 - Production
NLSRTL Version 11.1.0.7.0 - Production
另一个是虚拟机:
Oracle Database 11g Enterprise Edition Release 11.2.0.4.0 - 64bit Production
PL/SQL Release 11.2.0.4.0 - Production
"CORE 11.2.0.4.0 Production"
TNS for Linux: Version 11.2.0.4.0 - Production
NLSRTL Version 11.2.0.4.0 - Production
这些服务器的其他一切都是相同的。 我是两台服务器的 DBA。所有表和存储过程在两个数据库中都可以正常工作,但是当 Asp.net 尝试连接到它时,一个存储过程无法正常工作。
当我运行连接到 VM 数据库的 Asp.net 应用程序时,我收到以下错误,告诉我必须声明存储过程:
Message: Sys.WebForms.PageRequestManagerServerErrorException: ORA-06550: line 1, column 7:
PLS-00201: identifier 'GETINFO' must be declared
ORA-06550: line 1, column 7:
PL/SQL: Statement ignored
我打开我的 SQL Developer 并在 VM 数据库上调试过程,我得到了所需的值。 如果我尝试获取那个特定的存储过程,它只会在 .Net 应用程序中发生。其他一切,作为所有其他存储过程,都工作正常。
我为解决此问题所做的工作;
- 更改了过程的名称(没用)
- 检查架构以确保所有表和存储过程都属于正确的用户(它们确实属于正确的用户)
- 即使存储过程由该用户创建,我仍授予该用户访问权限。
- 我删除并重新创建了存储过程
- 我使用了
Myuser.storedprocedure名称符号,它不起作用
我不明白的是,完全相同的代码正在本地网络上运行,而且我可以通过 Oracle SQL Developer 调试存储过程。
我可以在这里分享存储的产品,但它真的非常长。
我该如何解决这个问题?
【问题讨论】:
-
我们能看到代码的相关部分和/或函数调用本身吗?您是否为应用程序使用完全相同的 ODBC 连接器?如果数据库级别的所有内容都相同,那么我们必须查看应用程序。
标签: c# sql asp.net oracle11g oracle-sqldeveloper