Синтаксис строки соединения для 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