Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ionic-framework/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用Nhibernate的Oracle连接。ORA-12514_Nhibernate_.net 3.5_Connection String_Oracle9i - Fatal编程技术网

使用Nhibernate的Oracle连接。ORA-12514

使用Nhibernate的Oracle连接。ORA-12514,nhibernate,.net-3.5,connection-string,oracle9i,Nhibernate,.net 3.5,Connection String,Oracle9i,我试图使用NHIBERNATE 3.1.0.4000版本将我的应用程序与Oracle数据库连接,但出现以下错误: ORA-12514:TNS:侦听器当前不知道连接描述符中请求的服务 我已经尝试了一些连接字符串,但都不起作用: 服务器=(描述=(地址=(协议=TCP)(主机=我的主机)(端口=我的端口))(连接数据=(服务名称=我的ID));uid=MyUser;pwd=我的密码 数据源=(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=MyHost)(PORT

我试图使用NHIBERNATE 3.1.0.4000版本将我的应用程序与Oracle数据库连接,但出现以下错误:

ORA-12514:TNS:侦听器当前不知道连接描述符中请求的服务

我已经尝试了一些连接字符串,但都不起作用:

  • 服务器=(描述=(地址=(协议=TCP)(主机=我的主机)(端口=我的端口))(连接数据=(服务名称=我的ID));uid=MyUser;pwd=我的密码

  • 数据源=(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=MyHost)(PORT=MyPort))(CONNECT_Data=(SERVICE_NAME=myid));用户Id=MyUser;密码=我的密码

  • 服务器=(描述=(地址=(协议=TCP)(主机=我的主机)(端口=我的端口))(连接数据=(SID=我的ID));uid=MyUser;pwd=我的密码

  • 驱动程序={Microsoft ODBC for Oracle};服务器=(描述=(地址=(协议=TCP)(主机=我的主机)(端口=我的端口))(连接数据=(SID=我的ID));Uid=MyUser;Pwd=我的密码

我拥有的属性是用户、密码、主机、端口和SID。换句话说,没有TNS。我的选择是直接连接

有些信息可能很重要:

  • 我正在使用一个测试项目运行它
  • 我正在使用VPN连接到数据库服务器
  • 我可以通过TOAD客户端连接到服务器
  • 我的项目是用.NETFramework 3.5构建的
  • oracle版本是9i
已安装的二进制文件:

  • 城堡,核心
  • 收藏
  • 亚硝酸铵
  • Nhibernate.ByteCode.Castle
  • Oracle.DataAcess
发展环境是:

  • Windows 7 64位
  • Visual Studio 2010高级版
hibernate.hbm.xml文件内容:

  <?xml version="1.0" encoding="utf-8"?>
<hibernate-configuration  xmlns="urn:nhibernate-configuration-2.2" >
    <session-factory name="NHibernate.Test">
        <property name="connection.driver_class">NHibernate.Driver.OracleClientDriver</property>
        <property name="connection.connection_string">
      SERVER=(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=MyHost)(PORT=MyPort))(CONNECT_DATA=(SID=MySID)));uid=MyUser;pwd=MyPassword;
    </property>
        <property name="show_sql">false</property>
        <property name="dialect">NHibernate.Dialect.Oracle9iDialect</property>
        <property name="query.substitutions">true 1, false 0, yes 'Y', no 'N'</property>
        <property name="proxyfactory.factory_class">NHibernate.ByteCode.Castle.ProxyFactoryFactory, NHibernate.ByteCode.Castle</property>
    </session-factory>
</hibernate-configuration>

NHibernate.Driver.OracleClientDriver
服务器=(描述=(地址=(协议=TCP)(主机=我的主机)(端口=我的端口))(连接数据=(SID=我的ID));uid=MyUser;pwd=我的密码;
假的
NHibernate.dial.Oracle9iDialect
真1,假0,是“Y”,否“N”
NHibernate.ByteCode.Castle.proxyFactory,NHibernate.ByteCode.Castle
谢谢大家,一切都是先进的!我希望能得到很多帮助

  • 确认您是否有SID或服务名称(您在TOAD中使用的是什么?),并选择适当的连接字符串
  • 检查名称是否与侦听器完全匹配
  • 如果服务器位于域中,请将该域添加到SID/SERVICE_NAME:MySID.MY.domain.COM
  • 如果您已经这样做了,请尝试删除它

    • 我终于解决了这个问题

      除了我以前编写的二进制文件之外,我刚刚将System.Data.OracleClient引用添加到存储库和测试的项目中,它神奇地工作了


      然而,重要的是要说,将VisualStudio移动到一个没有括号的文件夹是极其重要的,因为它是另一个错误的驱动程序。当您在64位平台上安装它时,Visual Studio安装在“C:\ProgramFiles(86x)\”文件夹中,这对于Oracle即时客户端来说是个问题。

      Hi@Fredy Treboux!谢谢你的回答。我对甲骨文很新。所以请原谅我的愚蠢问题。我不知道服务的名称和SID与蟾蜍中使用的相同。有什么办法可以让我从蟾蜍那里得到服务的名字吗?如何检查侦听器?我试图将该域添加到SID,但它不起作用。抱歉,我不确定我是否能够在没有机会使用系统的情况下帮助您进一步解决此问题,但我可以尝试。我刚才提到了一些过去曾咬过我的东西,甲骨文往往是晦涩难懂的,至少对我来说是这样。你总是遇到同样的错误吗?你能粘贴一张你如何通过蟾蜍连接的截图(没有真实信息)吗?是的,我总是遇到同样的错误。我当然可以,