programing

Classic ADO / ODBC / Oracle 10g EZConnect의 연결 문자열 구문

padding 2023. 10. 20. 13:28
반응형

Classic ADO / ODBC / Oracle 10g EZConnect의 연결 문자열 구문

다양한 VBA 프로젝트를 TNS가 아닌 ADO(2.8)를 사용하여 Oracle 10g 백엔드에 연결하려고 합니다. 다양한 시도 끝에 클린 설치를 위한 가장 간단한 일련의 단계는 다음과 같습니다.

  1. Oracle Instant 클라이언트 설정
  2. 함께 제공되는 ODBC 드라이버 설치
  3. (SQL Plus를 통해 EZCONNECT를 사용하여 연결 테스트)
  4. (윈도우즈 DSN을 생성하여 연결 테스트)

여기까지의 모든 것이 잘 작동합니다.문제는 ADO에 인스턴트 클라이언트 ODBC 드라이버를 사용하도록 지시하는 구문을 알 수 없다는 것입니다. 이 구문은 ODBC 드라이버 목록에 "내 테스트의 오라클"(따옴표 없음)로 표시됩니다.이 게시물이 시사하는 바와 같이 MSFT ODBC 드라이버를 EZConnect와 함께 사용하는 것은 인스턴트 클라이언트를 설정하기 전보다 더 잘 작동하지 않습니다(즉, 전혀 작동하지 않음).그러나 이 게시물은 정확한 방법을 언급하지 않고도 가능하다는 것을 암시하는 것 같습니다. connectionstrings.com 은 문자열의 데이터 소스 부분이 어떻게 생겼는지, 즉 SomeUser/SomePassword@만 알려줍니다.서버:포트 번호/인스턴스 이름

짧은 버전:인스턴트 클라이언트 ODBC 드라이버를 참조하는 고전적인 ADO 연결 문자열의 정확한 구문은 무엇입니까?

당신의 도움에 미리 감사드립니다.내가 SO와 함께 가는 데 바보같은 시간이 오래 걸렸어요...

user1206604'의 답변과 유사하게 ODBC Data Source Administrator를 사용하여 ODBC 연결을 설정하고 다음과 같이 연결합니다.

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

이 방법을 사용해 보고 값을 적절히 바꿉니다.

Set Connection = CreateObject("ADODB.Connection")

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

인스턴트 클라이언트에서 Oracle이 작동하지 않으면 HKEY_LOCAL_MACHINE\SOFTWARE\ODBC\를 확인합니다.ODBCINST.INI\ODBC Drivers 레지스트리 키를 통해 Oracle Instant Client에 대한 값을 확인할 수 있습니다(버전 번호가 추가될 수 있음).

그래도 안 되면요.자세한 내용을 댓글로 남겨주시면 제가 답변을 조정해드리겠습니다.

' 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

언급URL : https://stackoverflow.com/questions/3398272/connection-string-syntax-for-classic-ado-odbc-oracle-10g-ezconnect

반응형