IIS站点未连接到Oracle数据库

时间:2018-05-25 08:44:35

标签: oracle iis-8.5

我有一台带有IIS的服务器来托管网站。 其中一些网站(Silverlight)必须连接到Oracle数据库才能通过OleDb执行查询,但它们不能。

以下是我测试的结果:

  • ' MSDAORA'我在网站上运行

  • 时,提供商未在本地计算机上注册
  • ORA-01019:无法在用户端分配内存(当我尝试连接没有管理员状态的测试控制台程序时)

  • 连接确定(使用具有管理员身份的相同测试控制台程序)

  • ORA-12154:TNS:尝试切换到另一种连接方法时无法解析指定的连接标识符(从OleDb到Oracle.ManagedDataAccess.Client)

    < / LI>

我经历了无数关于这类错误的信息,但我找不到任何可行的解决方案。 这是我测试的:

  • 给予&#34;创建全局对象&#34;对相关用户的权利(完全没有变化)
  • 一个接一个地安装多个Oracle客户端。最好的结果是10.2客户端64b(我的测试程序可以在具有管理员权限的情况下连接)。安装很干净(没有几个Oracle文件夹,也没有几个Oracle环境变量)
  • 禁用有关管理员提升的警告(即在提升期间没有确认弹出):完全没有变化

  • 检查内存使用情况(脚下有足够的内存)

其他信息:

  • 连接字符串

Provider=msdaora;Data Source=HOSTNAME;User Id=USER;Password=PASSWORD

  • 与OleDb和Oracle.ManagedDataAccess.Client一起使用的相同连接字符串。

  • tsnames.ora文件存在(并且可以使用管理员测试程序显示我的成功尝试)

  • 它正在使用较旧的Web服务器,但是找到任何有意义的服务器(不同的Windows,32 / 64b,不同的IIS版本,不同的Oracle客户端)存在太多差异

有什么想法吗?

1 个答案:

答案 0 :(得分:1)

有几点:

  • OLE DB的Microsoft msdaora提供程序已为deprecated多年。您应该更喜欢Oracle Provider OraOLEDB.Oracle

  • Oracle客户端 OLE DB提供程序 IIS应用程序必须具有相同的体系结构,即所有必须是32位或64位,您不能混用他们。 (古代msdaora不适用于64位)。但是,ODP.NET托管驱动程序(Oracle.ManagedDataAccess)适用于32位和64位。

  • 使用ODP.NET托管驱动程序时,ConnectionString中不需要Provider=MSDAORA。我认为这些属性被忽略了,或者你只是错过了提及它。

  • Oracle客户端和OLE DB提供程序的版本必须匹配(即使是次要版本)。由于COM限制,您无法为32位和64位安装多个OLE DB提供程序。

  • OLE DB中tnsnames.ora文件的搜索模式与ODP.NET托管驱动程序中的搜索模式不同。验证以下项目:

    • OLE DB会在您的注册表中读取TNS_ADMIN值,而ODP.NET托管驱动程序则不会。
    • ODP.NET托管驱动程序使用您的.NET配置文件(即web.configmachine.config)来确定tnsnames.ora文件的位置,而OLE DB则不会。
    • 根据documentation ODP.NET托管驱动程序确实考虑了TNS_ADMIN环境变量和文件夹%ORACLE_HOME%\network\admin。但是,根据我的测试,它无论如何都会。
  • 关于连接失败取决于“Rus as Administrator”检查Oracle安装文件夹的权限。