Я пытаюсь подключиться к Oracle через Power Query > From Database > From Oracle Database
а затем я BI_TST
, который находится внутри моего TNSNAMES (находится в: C:\oracle\product\10.2.0\client_2\network\ADMIN
), и имеет соединение ниже внутри:
BI_TST =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = srv-oracle3.mycompany.com.br)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = bitst)
)
)
Также у меня есть путь переменной, настроенный как TNS_ADMIN=C:\oracle\product\10.2.0\client_2\network\ADMIN
.
Когда я использую SQL Developer для подключения, не используя TNS, устанавливая всю информацию вручную, она работает!
Когда я пытаюсь подключиться с помощью TNS в Excel, я получаю ошибку:
Message=ORA-12154: TNS:não foi possível resolver o identificador de conexão especificado
ErrorCode=-2146232008
Wich означает на английском языке: “не удалось разрешить идентификатор соединения”
Может ли кто-нибудь помочь мне в этом вопросе?
Заранее спасибо!
Честно говоря, у меня были заполненные имена. Я понимаю идею, стоящую за ней, и могу ее оценить, но я больше трачу время на то, чтобы понять, почему она не работает, чем я экономлю лишние нажатия клавиш.
По моему мнению, просто обойти TNSnames использовать Oracle ezconnect:
srv-oracle3.mycompany.com.br:1521/bitst
На месте:
BI_TST
Это должно работать и для ODBC. Если вы не можете напрямую подключиться через драйвер PowerQuery Oracle, попробуйте пройти через ODBC. Хотя это дополнительный слой, которого вы, вероятно, не хотите, я сомневаюсь, что вы заметите разницу в производительности, и он может абстрагировать трудности, с которыми вам обычно приходится иметь дело.
Чтобы уточнить ответ Hambone, подключите Excel к Oracle через драйвер клиента Oracle без использования имен TNS:
- Перейдите в Панель управления> Средства администрирования> Источники данных ODBC
- Перейдите на вкладку “Файл DSN”
- Выберите драйвер Oracle (например, Oracle11gr1)
- Укажите имя для нового источника данных (любое имя)
- Когда появится запрос на имя службы, введите host: port/servicename, например db123: 1521/service123
Надеюсь, это работает для всех.