2014-09-18 3 views
0

У меня есть работать первенствует макрос, который подключается с помощью следующего типа соединения:Изменение VBA ADODB строки подключения, нужно быть более конкретным

Set cn = New ADODB.Connection 
Set rs = New ADODB.Recordset 

    cn.Open (_ 
    "User ID=userid" & _ 
    ";Password=pass" & _ 
    ";Data Source=blank.blank.com" & _ 
    ";Provider=MSDAORA.1") 

Я могу соединиться в одной части моей сети, но когда я пытаюсь использовать тот же макрос на другом компьютере, с которым я больше не могу подключиться. Я думаю, что есть сетевая проблема, и мне нужно быть более «конкретным». Поэтому после некоторых поисковых запросов я столкнулся с другими строками подключения данных, которые используют IP и имя порта.

Driver={Microsoft ODBC for Oracle}; 
Server=(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=199.199.199.199)(PORT=1523))(CONNECT_DATA=(SID=dbName))); 
Uid=myUsername;Pwd=myPassword; 

Исходя из https://www.connectionstrings.com/microsoft-odbc-for-oracle/

После Microsofts documentation тогда я получаю следующее:

With cn 
    .Provider = "MSDAORA.1" 
    .ConnectionString = "Driver={Microsoft ODBC for Oracle};" & _ 
         "Server=(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=1.1.1.1)(PORT=xxxx))(CONNECT_DATA=(SID=DB)));" & _ 
         "Uid=userid;Pwd=pass;" 
    .Open 
End With 

Однако я получаю сообщение об ошибке: ORA-12560 TNS:Protocol adapter error

Некоторые решения показывают, что я должен перезапустить базу данных , но он работает! Я подключаюсь к нему просто отлично.

Есть ли у кого-нибудь лучший способ подключения «более конкретно», который мог бы помочь в моей сетевой проблеме или мог бы помочь мне исправить мой новый способ подключения?

ответ

0

Я всегда использовал тот вариант, который вы изначально использовали. Тот факт, что он работает на одной машине и не работает на другом, указывает на то, что у вас нет драйвера MSDAORA, установленного на втором компьютере. Машина требует, чтобы на вашем компьютере был установлен драйвер ODBC, чтобы ваш код функционировал.

Перейдите в ODBC и убедитесь, что вы можете создать тестовое соединение через панель ODBC на втором компьютере, чтобы убедиться, что ODBC функционирует для драйвера MSDAORA.

Я вижу, что при использовании Microsoft ODBC для Oracle нет тестового соединения. Существует для драйвера Oracle. Один из способов проверить это - открыть MS Access и создать связанную таблицу, используя созданное вами соединение Microsoft ODBC. Он подскажет вам пароль, и если он удастся, вы свяжете таблицу и узнаете, что она работает, или она даст вам ошибку ODBC, и вы узнаете, что это не так.

Или вы можете использовать драйвер Oracle, для которого потребуется установить драйвер Oracle Client, и изменить информацию о соединении, чтобы отразить этот драйвер вместо MS.

+0

Если бы вы могли предоставить немного подробностей при тестировании соединения, я был бы вам признателен. Погубите это сейчас, когда мы говорим. Но также я подумал, что добавив ссылки Microsoft ActiveX на макрос в Excel, это позаботится об этом? – ZAX

+0

Я не могу найти «тестовое соединение» на панели ODBC после создания соединения. Если он принимает и показывает на панели после создания, значит ли это, что тест прошел успешно? – ZAX

+0

Хммм ... Я вижу, что при использовании Microsoft ODBC для Oracle нет тестового соединения. Существует для драйвера Oracle. Один из способов проверить это - открыть MS Access и создать связанную таблицу, используя созданное вами соединение Microsoft ODBC. Он предложит вам ввести пароль, и если он преуспеет, вы свяжете таблицу или это даст вам ошибку ODBC. – Sitch

Смежные вопросы