Oracle соединение с использованием Nhibernate.ORA-12514 - PullRequest
0 голосов
/ 15 ноября 2011

Я пытаюсь подключить свое приложение к базе данных Oracle, используя версию NHIBERNATE 3.1.0.4000, и у меня появляется эта ошибка:

ORA-12514: TNS: слушатель в настоящее время не знает о запрошенной услугев дескрипторе соединения

Я уже пробовал некоторые строки подключения, и ни одна из них не работает:

  • SERVER = (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP) (HOST = MyHost) (PORT = MyPort)) (CONNECT_DATA = (SERVICE_NAME = MySID))); uid = MyUser; pwd = MyPassword;

  • Источник данных = (ОПИСАНИЕ = (ADDRESS = (PROTOCOL = TCP) (HOST = MyHost) (PORT = MyPort)) (CONNECT_DATA = (SERVICE_NAME = MySID))); Идентификатор пользователя = MyUser; Пароль = MyPassword;

  • SERVER = (ОПИСАНИЕ = (АДРЕС = (ПРОТОКОЛ = TCP) (HOST = MyHost) (PORT = MyPort)) (CONNECT_DATA = (SID = MySID))); uid = MyUser; pwd = MyPassword;

  • Драйвер = {Microsoft ODBC для Oracle}; Сервер = (ОПИСАНИЕ = (АДРЕС = (ПРОТОКОЛ = TCP) (ХОСТ = MyHost) (ПОРТ = МойПорт)) (CONNECT_DATA = (SID = MySID))); Uid= MyUser; Pwd = MyPassword;

У меня есть следующие свойства: Пользователь, Пароль, Хост, Порт и SID.Другими словами, TNS не существует.Я могу подключиться напрямую.

Некоторые сведения могут быть важны:

  • Я использую тестовый проект.
  • Я использую VPN-соединениек серверу базы данных.
  • Я могу подключиться к серверу через клиент TOAD в порядке
  • Мой проект был построен с .NET Framework 3.5
  • Версия Oracle 9i

Установленные двоичные файлы:

  • Castle.Core
  • Iesi.Collection
  • Nhibernate
  • Nhibernate.ByteCode.Castle
  • Oracle.DataAcess

Среда разработки:

  • Windows 7 64 бит
  • Visual Studio 2010 Premium

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>

Спасибо, все продвинулись!Я надеюсь, что так много поможет!

Ответы [ 2 ]

2 голосов
/ 16 ноября 2011
  • Убедитесь, что у вас есть SID или SERVICE_NAME (что вы используете в TOAD?) И выберите соответствующую строку подключения.
  • Убедитесь, что имя точно соответствует слушателю.
  • Если сервер находится в домене, добавьте домен в SID / SERVICE_NAME: MySID.MY.DOMAIN.COM
  • Если вы уже это делаете, попробуйте удалить его.
0 голосов
/ 16 ноября 2011

Наконец-то я решил эту проблему.

Помимо бинарных файлов, которые я писал ранее, я просто добавил ссылку System.Data.OracleClient на проект репозитория и теста, и он волшебным образом работал!

Однако важно сказать, что чрезвычайно важно переместить Visual Studio в папку без круглых скобок, потому что она вызвала у меня еще одну ошибку. При установке на 64-разрядную платформу Visual Studio устанавливается в папку «C: \ ProgramFiles (86x) \», и ​​это является проблемой для Oracle Instant Client.

...