Синтаксис строки соединения для Classic ADO/ODBC/Oracle 10g EZConnect

Я пытаюсь подключить различные проекты VBA к заднему концу Oracle 10g с использованием ADO (2.8) и TNS. После различных попыток мы решили, что самая простая серия шагов для чистой установки включает в себя:

  • Настройка мгновенного клиента Oracle
  • Установите сопроводительный драйвер ODBC
  • (Проверьте соединение с помощью EZCONNECT через SQL Plus)
  • (Проверьте соединение, создав DSN для Windows)

Все, что здесь хорошо работает. Проблема в том, что я не могу понять синтаксис, чтобы сообщить ADO использовать драйвер ODBC для мгновенного клиента, который появляется в моем списке драйверов ODBC как "Oracle in MyTest" (без кавычек). Использование драйвера MSFT ODBC с EZConnect в качестве этого сообщения предполагает, что это не работает лучше, чем это было до настройки мгновенного клиента (а именно, совсем нет), Но этот пост, кажется, предлагает это, не указывая точно, как, и connectionstrings.com указывает только то, что выглядит строка источника данных строки, т.е.   SomeUser/SomePassword @AServer: PortNumber/InstanceName

Краткая версия: Каков точный синтаксис классической строки соединения ADO, ссылающейся на драйвер ODBC для мгновенного клиента?

Заранее благодарим за помощь. Принял меня глупое долгое время, чтобы пойти с SO...

Ответ 1

Как и для user1206604 answer - я установил ODBC-соединение, используя ODBC Data Source Administrator (например, сакэ, мы назовем его "DEMO" ) и подключимся следующим образом:

Dim conn As New adodb.Connection
Set conn = New adodb.Connection

connStr = "Provider=OraOLEDB.Oracle;Data Source=DEMO;User Id=yourUserID;Password=yourPassword;"
conn.Open connStr

Dim api As New adodb.Recordset
Set api = New adodb.Recordset

yourQueryString = "SELECT foo FROM bar"
api.Open yourQueryString, conn, adOpenDynamic, adLockReadOnly 
'adjust above setting as needed

while not api.EOF
  'do interesting stuff here
wend

'clean up resources
api.Close
Set api = Nothing

conn.Close
Set conn = Nothing

Администратор источника данных ODBC находится на моем компьютере в меню "Пуск" > "Программы" > "Oracle - oraClient10g" > "Инструменты настройки и миграции" > "Администратор Microsoft ODBC" и выглядит следующим образом:

ODBC Data Source Administrator

Ответ 2

Попробуйте это и замените значения соответствующим образом:

Set Connection = CreateObject("ADODB.Connection")

blnTest = Connection.Open("Driver={Oracle in instantclient};Dbq=127.0.0.1:1521/SERVICENAMEHERE", "USERNAME", "PASSWORD")

Если Oracle в instantclient не работает, проверьте раздел реестра HKEY_LOCAL_MACHINE\SOFTWARE\ODBC\ODBCINST.INI\ODBC Драйвер, чтобы узнать, какое значение для Oracle Instant Client (может быть добавлен номер версии).

Если это все еще не работает для вас. Оставьте комментарий с информацией о том, что произошло, и я попытаюсь настроить ответ для вас.

Ответ 3

' Create a connection object.'
Dim cn As ADODB.Connection
Set cn = New ADODB.Connection

' Create a recordset object.'
Dim rs As ADODB.Recordset
Set rs = New ADODB.Recordset

' Provide the connection string.'
Dim strConn As String
Dim str As String

'Use the SQL Server OLE DB Provider.'
strConn = "Driver=(Oracle in OraHome92);" & "Data Source=;Uid=;Pwd=;"

'Now open the connection.'
cn.Open strConn
With rs

    ' Assign the Connection object.'
    ActiveConnection = cn

    ' Extract the required records.'
    .Open "SELECT ", cn


End With