在Windows Server 2012 R2下运行旧版OCI应用程序会导致崩溃

在Windows Server 2012 R2下运行旧版OCI应用程序会导致崩溃,c,oracle,deployment,oracle-call-interface,nls-lang,C,Oracle,Deployment,Oracle Call Interface,Nls Lang,我有一个使用OCI7API的应用程序。此应用程序已成功部署在多种配置上,如 WS2003/Oracle9和WS2008 R2/Oracle12(r1)。我现在正试图在WS2012 R2上部署该应用程序,但我遇到了一个令人沮丧的问题,即该应用程序在oranls12.dll中的某个位置因非法访问而崩溃。这使得人们认为它与语言环境和/或系统变量有关。我已经检查了NLS_LANG系统变量是否设置为与数据库使用的相同,即AMERICAN_AMERICA.WE8MSWIN1252 我已经尝试过使用二进制文件

我有一个使用OCI7API的应用程序。此应用程序已成功部署在多种配置上,如

WS2003/Oracle9和WS2008 R2/Oracle12(r1)。我现在正试图在WS2012 R2上部署该应用程序,但我遇到了一个令人沮丧的问题,即该应用程序在oranls12.dll中的某个位置因非法访问而崩溃。这使得人们认为它与语言环境和/或系统变量有关。我已经检查了NLS_LANG系统变量是否设置为与数据库使用的相同,即AMERICAN_AMERICA.WE8MSWIN1252

我已经尝试过使用二进制文件,我知道它在WS2008上工作,我也在WS2012上编译过它。它仍然崩溃。有没有人知道什么地方出了问题,或者对如何正确调试有什么建议

任何需要的细节我都会提供


为了回答下面的评论,该应用程序使用OCI7API,新的驱动程序仍然提供该API。该应用程序本身是根据OCI 12编译的。服务器上运行的数据库是Oracle 12.1.0.1。

OCI 7?恐怕没有人能帮你,除非你提供更多的细节。最好的解决方案是在Metalink上打开SR。有什么特别的原因不能使用更高版本的OCI吗?据我所知,OCI7已经死了15年多,我真的希望你没有使用Oracle 7.x。@timclutton OCI7使用不同的API。现在使用OCI7的唯一理由是提取TCP连接的文件句柄id。这有助于检测死连接。@timclutton:请参见编辑:)@ibre5041:该应用程序在WS2008上运行良好。这也是根据O12编译的。