Это ошибка ORA-12154: TNS: не удалось разрешить указанный идентификатор подключения?
У меня есть этот код:
OracleConnection con = new OracleConnection("data source=localhost;user id=fastecit;password=fastecit");
con.Open(); string sql="Select userId from tblusers";
OracleCommand cmd = new OracleCommand(sql, con);
OracleDataReader dr = cmd.ExecuteReader();
while (dr.Read())
{ messageBox.Show(dr[0].Tostring()); }
Один и тот же код в обоих проектах,
в project1 "WinForm" работает правильно
в project2 "Excel 2007 надстройки" появляется следующая ошибка:
ORA-12154: TNS: не удалось разрешить указанный идентификатор подключения
Я использую C#.net 2010, офис 2007, Windows8, Oracle 10g.
При подготовке ручного подключения к базе данных, как показано на рисунке
Visual Studio, откройте меню Вид + Обозреватель серверов.
Щелкните правой кнопкой мыши Data Connection + Add Connection + Выберите имя сервера базы данных Oracle: localhost или имя моего компьютера, задайте имя пользователя и пароль и нажмите Test Connection, проверка не удалась.
2 ответа
ORA-12154: TNS: не удалось разрешить указанный идентификатор подключения?
Если TNS не определен, вы также можете попробовать это:
Если вы используете C#.net 2010
или другую версию VS и Oracle 10g Express Edition или более низкую версию, и вы создаете строку подключения, например:
static string constr = @"Data Source=(DESCRIPTION=
(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST=yourhostname )(PORT=1521)))
(CONNECT_DATA=(SERVER=DEDICATED)(SERVICE_NAME=XE)));
User Id=system ;Password=yourpasswrd";
После этого вы получите сообщение об ошибке ORA-12154: TNS:could not resolve the connect identifier specified
затем сначала нужно перезагрузить систему и запустить проект.
И если у вас 64-битная версия Windows, вы устанавливаете 32-битную версию oracle 11g, а если 64-битную версию 11g, то вы устанавливаете Oracle 11g Компоненты доступа к данным Oracle (ODAC) с Oracle Developer Tools для Visual Studio версии 11.2.0.1.2 или новее из OTN. и проверьте его в Oracle Universal Installer. Убедитесь, что проверено следующее:
Oracle Data Provider for .NET 2.0
Oracle Providers for ASP.NET
Oracle Developer Tools for Visual Studio
Oracle Instant Client
И перезапустите ваш vs, затем запустите ваш проект.... ПРИМЕЧАНИЕ:- ПЕРЕЗАГРУЗКА СИСТЕМЫ необходима для РЕШЕНИЯ ЭТИХ ТИПОВ ОШИБОК.......
База данных должна иметь имя (например, DB1), попробуйте это:
OracleConnection con = new OracleConnection("data source=DB1;user id=fastecit;password=fastecit");
Если TNS не определен, вы также можете попробовать это:
OracleConnection con = new OracleConnection("Data Source=(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST=localhost)(PORT=1521)))(CONNECT_DATA=(SERVER=DEDICATED)(SERVICE_NAME=DB1)));
User Id=fastecit;Password=fastecit");
Запустите приведенную ниже команду в командной строке
tnsping Datasource
Это должно дать ответ, как показано ниже
C:>tnsping *******
Утилита TNS Ping для *** Windows: Версия *** - Производство на *****
Авторское право (c) 1997, 2014, Oracle. Все права защищены.
Используемые файлы параметров: c:\oracle*****
Используется **** для разрешения псевдонима Попытка связаться (description = (address_list = (address = (protocol = tcp) (host =) (port =))) (connect_data = (server =) (service_name =) (failover_mode = (type =) (method =) (retries =) (delay =)))) ** OK (**** мс)
Добавьте текст "Datasource=" в начало и учетные данные в конце. последняя строка должна быть
Источник данных = (description = (address_list = (address = (protocol = tcp) (host =) (port =))) (connect_data = (server =) (service_name =) (failover_mode = (type =) (method =) (retries =) (delay=)))); Идентификатор пользователя =; Пароль =; **
Используйте это как строку подключения для подключения к Oracle db.