source

SQL 2000/2005에서 Oracle 데이터베이스에 연결된 서버를 어떻게 설정합니까?

bestscript 2023. 7. 19. 22:42

SQL 2000/2005에서 Oracle 데이터베이스에 연결된 서버를 어떻게 설정합니까?

원격 Oracle 데이터베이스에서 로컬 SQL 서버로 테이블을 복사하는 DTS 패키지를 만들고 실행할 수 있지만 Oracle 데이터베이스에 대한 연결을 연결된 서버로 설정하려고 합니다.

DTS 패키지는 현재 다음 속성을 가진 오라클용 마이크로소프트 OLE DB 공급자를 사용합니다.

  • 소스: 데터원본이:SERVER=(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=10.1.3.42)(PORT=1521))(CONNECT_DATA=(SERVICE_NAME=acc)));uid=*UserName*;pwd=*UserPassword*;
  • 암호:사용자 암호
  • 사용자 ID: 사용자 이름
  • 암호 저장 허용: true

위에 정의된 데이터 원본을 사용하여 Oracle 데이터베이스에 연결된 서버를 설정하려면 어떻게 해야 합니까?

원격 Oracle 데이터베이스에 연결된 서버를 설정할 수 있었는데, 이 과정은 다단계 프로세스가 되었습니다.

  1. SQL Server에 Oracle ODBC 드라이버를 설치합니다.
  2. SQL Server의 Oracle 데이터베이스에 시스템 DSN을 생성합니다.
  3. 시스템 DSN을 사용하여 SQL 서버에 연결된 서버를 생성합니다.

1단계: 서버에 Oracle ODBC 드라이버 설치

필요한 Oracle Instant Client 패키지(Basic, ODBC 및 SQL*Plus) 다운로드(선택 사항)

(일반적으로 "SQL " " 일적 " 에패 " 을반 " 니지 " 풉다 " ) 풉니다.C:\Oracle [가 [디렉토리]가.C:\Oracle\instantclient_10_2이 값은 이 답변의 나머지 부분에서 참조되는 [directory]의 값이 됩니다.

인스턴트 클라이언트 [디렉토리] 내에 다음을 포함하는 텍스트 파일을 만듭니다.

OracleTnsName = 
(
  DESCRIPTION=
  (
    ADDRESS = (PROTOCOL=TCP)(HOST=10.1.3.42)(PORT=1521)
  )
  (
    CONNECT_DATA = (SERVICE_NAME=acc)
  )
)

참고: 실제HOST,PORT,그리고.SERVICE_NAME연결을 설정하는 Oracle 서버에 따라 달라집니다.이 정보는 수신기 아래에 있는 Oracle 네트워크 클라이언트 도구를 사용하여 찾을 수 있습니다.

OracleTnsNameOracle 데이터 원본에 할당할 모든 이름이 될 수 있으며 시스템 DSN을 설정할 때 사용됩니다.또한 위 구문을 사용하여 동일한 tnsnames. 또는 원하는 경우 파일에 여러 TNS 이름을 정의할 수 있습니다.

[directory]를 시스템 환경 변수에 추가합니다.

값이 [directory]인 새 시스템 환경 변수를 만듭니다.

유틸리티를 실행하여 Oracle ODBC 드라이버를 설치합니다.

SQL 서버를 재부팅하는 것이 좋지만 필요하지 않을 수도 있습니다.또한 SQL 서버 및 SQL 에이전트 사용자 ID에 대해 이 디렉터리에 보안 권한을 부여할 수도 있습니다.

2단계: Oracle ODBC 드라이버를 사용하는 시스템 DNS 생성

ODBC 데이터 원본 관리자 도구를 엽니다.[ 관리 도구 --> 데이터 소스(ODBC) ]

시스템 DSN 탭을 선택한 다음 추가 버튼을 선택합니다.

드라이버 목록에서 인스턴트 클라이언트 {version}(예: 'Oracle in instantclient 10_2')의 오라클을 선택한 다음 마침 버튼을 선택합니다.

다음을 지정합니다.

  • Data Source Name{시스템 DSN 이름}
  • Description{공백/공백}
  • TNS Service Name그것을 가져야 합니다.OracleTnsName나열된 파일에서 정의한 값을 선택합니다.
  • 사용자 ID: {Oracle 사용자 이름}

연결 테스트 버튼을 선택합니다.{Oracle 사용자 암호}를 입력하라는 메시지가 표시됩니다.모든 것이 잘 되면 시험은 성공할 것입니다.

3단계: SQL에서 Oracle 데이터베이스에 연결된 서버 생성

SQL 서버에서 쿼리 창을 열고 다음을 실행합니다.

EXEC sp_addlinkedserver 
     @server        = '{Linked Server Name}'
    ,@srvproduct    = '{System DSN Name}'
    ,@provider      = 'MSDASQL'
    ,@datasrc       = '{System DSN Name}'

EXEC sp_addlinkedsrvlogin 
     @rmtsrvname    = '{Linked Server Name}'
    ,@useself       = 'False'
    ,@locallogin    = NULL
    ,@rmtuser       = '{Oracle User Name}'
    ,@rmtpassword   = '{Oracle User Password}'

참고: The{Linked Server Name}Oracle 서버를 참조할 때 사용할 모든 항목이 될 수 있지만,{System DNS Name} 이전에 생성한 시스템 DSN의 이름과 일치해야 합니다.

{Oracle User Name}시스템 DSN에서 사용하는 사용자 ID와 동일해야 합니다.{Oracle User Password}ODBC 연결을 성공적으로 테스트하기 위해 사용한 것과 같아야 합니다.Oracle 연결 서버 문제 해결에 대한 내용은 KB 280106을 참조하십시오.

오라클 연결 서버 쿼리

OPENQUERY를 사용하여 Oracle 연결 서버에서 통과 쿼리를 실행할 수 있지만 매우 큰 레코드 집합의 경우ORA-01652오류 메시지(지정한 경우)ORDER BY통과 쿼리의 절입니다.이동ORDER BY패스스루 쿼리에서 외부 선택 문에 대한 절은 이 문제를 해결했습니다.

저도 같은 문제가 있었습니다.저는 마이크로소프트와 몇 시간 동안 전화 통화를 했지만, 그들은 해결책이 없었습니다.이러한 "연결 시간 초과" 설정은 도움이 되지 않았습니다.

이를 해결하기 위해, 저는 프로세스를 실행하는 DTS 작업을 만들었습니다. 프로세스는 한 행, 한 열, 2분마다 시간을 업데이트합니다.그런 다음 SQL Server와 Oracle 간의 복제를 설정하여 SQL에서 Oracle로 변경된 단일 셀을 3분마다 복제하도록 예약했습니다.연결 상태를 유지합니다!

언급URL : https://stackoverflow.com/questions/307636/how-do-you-setup-a-linked-server-to-an-oracle-database-on-sql-2000-2005