Мне удалось подключиться к экземпляру Oracle 11g, используя следующую строку подключения, и вызвать OpenDatabase.Я использую версию DAO, доступную по ссылке «Объект ядра базы данных Microsoft Office 16.0 Access»:
' Construct connection string
oracxnstr = "Driver={Microsoft ODBC for Oracle};Server=(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=fake.url.com)(PORT=fakePortNo))(CONNECT_DATA=(SID=fakeSID)));Uid=fakeUid;Pwd=fakePw;"
Я, очевидно, использовал в этой строке поддельные параметры, поэтому я не выставляю свою базу данных.
' attempt to connect to oracle
Set oradb = dbws.OpenDatabase("", 1, True, oracxnstr)
Документация Microsoft DAO крайне неадекватна, поэтому я указываю на различия между моим и вашим кодом, которые могут иметь отношение:
- Я использую соединениестроковый параметр "Сервер" вместо "CONNECTSTRING."Однако любой из них работает в моей системе.
- Я использую параметр строки подключения "SID" вместо "SERVICE_NAME".Это также не имело значения ... на этот раз.Но по причинам, которые я не понимаю, я знаю, что это имело значение в прошлом.Я не понимаю, почему это иногда имеет значение.(Я новичок в Oracle, но я думаю, что конфигурация Oracle как-то связана с ним.)
- Для второго параметра метода OpenDatabase я использую 1 вместо true.Это перечисляемая константа dbDriverNotPrompt.Если я изменяю на true, это также не имеет значения.
- Если я использую DAO 3.6, я делаю получаю ошибку времени выполнения 3151 «Ошибка подключения ODBC».Мне интересно, не может ли более старая версия обрабатывать строки подключения без Oracle или без TNS к Oracle?
Единственное другое отличие, о котором я могу подумать, это то, что, возможно, ваше имя пользователя Oracle /Учетная запись пароля имеет разрешения только для чтения, а для третьего параметра метода OpenDatabase установлено значение false?