Я являюсь пользователем SQL Server.
Я работаю над проектом, в котором используется oracle (который я редко использую). Мне нужно создать ODBC-соединение, чтобы я мог получить доступ к некоторым данным через MS Access. У меня есть приложение на моей машине под названием oraHome90. Кажется, оно позволяет настроить что-то, называемое слушателем, в "утилите конфигурации сети", я думаю, что необходимо также настроить "конфигурацию имени локальной службы сети". ИТ-поддержка дала мне эту информацию для настройки ODBC-соединения. Я перепробовал все комбинации, которые только можно придумать. Я могу пройти тест, который успешно проходит тест на "вход" в базу данных сервера oracle. Когда я пытаюсь создать ODBC-соединение, я получаю следующую ошибку: ORA-12154: TNS: Could not resolve service name.
Предполагается, что я хочу начать с нуля и следующая информация должна позволить мне подключиться к базе данных...... Любые предложения или комментарии? Примечание: в конечном итоге проект будет иметь веб-сайт .ASP страница запрос данных, но я должен сначала доказать, что я могу видеть данные с помощью ODBC соединения через MS Access
Service name: SERVICENAME
HOST = HOST.XYZi.com
User Id: MYUSERID
Password: MYPASSWORD
~~~~~~~~~~~~~~~~~~~~~~~~~~~~
'Oracle Connection
Dim ocst
Dim oconn
ocst = "Provider=OraOLEDB.Oracle;" & _
"Data Source=DATASOURCE;" & _
"User ID=CHIJXL;" & _
"Password=password;"
set oconn = CreateObject("ADODB.Connection")
с сайта http://ora-12154.ora-code.com
ORA-12154: TNS:не удалось разрешить указанный идентификатор подключения
Причина: Соединение с базой данных или другой службой было запрошено с использованием идентификатора соединения, но указанный идентификатор соединения не может быть преобразован в дескриптор соединения с помощью одного из настроенных методов именования. Например, если тип используемого идентификатора подключения - имя сетевой службы, то имя сетевой службы не может быть найдено в хранилище метода именования, или хранилище не может быть найдено или достигнуто.
Действие:
Если вы используете локальное именование (файл TNSNAMES.ORA):
Убедитесь, что "TNSNAMES" указан как одно из значений параметра NAMES.DIRECTORY_PATH в профиле Oracle Net (SQLNET.ORA).
Убедитесь, что файл TNSNAMES.ORA существует, находится в нужном каталоге и доступен.
Убедитесь, что имя службы net, используемое в качестве идентификатора подключения, существует в файле TNSNAMES.ORA.
Убедитесь, что в файле TNSNAMES.ORA нет синтаксических ошибок. Ищите несопоставленные круглые скобки или лишние символы. Ошибки в файле TNSNAMES.ORA могут сделать его непригодным для использования.
Если вы используете именование каталогов:
Убедитесь, что "LDAP" указан как одно из значений параметра NAMES.DIRETORY_PATH в профиле Oracle Net (SQLNET.ORA).
Убедитесь, что сервер каталогов LDAP запущен и что он доступен.
Убедитесь, что имя службы net или имя базы данных, используемое в качестве идентификатора подключения, настроено в каталоге.
Убедитесь, что используемый по умолчанию контекст корректен, указав в качестве идентификатора подключения полное имя сетевой службы или полный LDAP DN.
Если вы используете простое именование подключений:
Убедитесь, что "EZCONNECT" указан как одно из значений параметра NAMES.DIRETORY_PATH в профиле Oracle Net (SQLNET.ORA).
Убедитесь, что указанные хост, порт и имя службы верны.
Попробуйте заключить идентификатор подключения в кавычки. Более подробную информацию об именовании см. в Руководстве администраторов служб Oracle Net или в руководстве по конкретной операционной системе Oracle.
Исходя из предположения, что вы используете именование TNSNAMES, вот несколько вещей, которые необходимо сделать:
SERVICENAME_alias = (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = HOST.XYZi.com)(PORT = 1521)) (CONNECT_DATA = (SERVICE_NAME = SERVICENAME))
Это при условии, что вы используете стандартный порт Oracle 1521. Обратите внимание, что servicename_alias может быть любым именем, которое вы хотите использовать в локальной системе. Вы также можете обнаружить, что вам нужно указать (SID = SERVICENAME) вместо (SERVICENAME=SERVICENAME).
@Warren и @DCookie рассказали о решении, единственное, что следует подчеркнуть, это использование tnsping
. Вы можете использовать его для проверки правильности ваших TNSNames перед попыткой подключения.
После правильной настройки tnsnames вы можете использовать ODBC или попробовать TOra, который будет использовать ваше родное соединение с oracle. TOra или что-то подобное (TOAD, SQL*Plus и т.д.) окажет неоценимую помощь в отладке и улучшении вашего SQL.
И последнее, но не менее важное: когда вы в конце концов подключитесь с помощью ASP.net, помните, что вы можете использовать библиотеки подключения к данным Oracle. Множество ресурсов можно найти на Oracle.com.