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 데이터베이스에 연결된 서버를 설정할 수 있었는데, 이 과정은 다단계 프로세스가 되었습니다.
- SQL Server에 Oracle ODBC 드라이버를 설치합니다.
- SQL Server의 Oracle 데이터베이스에 시스템 DSN을 생성합니다.
- 시스템 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
'source' 카테고리의 다른 글
| 판다는 누적합에 따라 분류합니다. (0) | 2023.07.19 |
|---|---|
| 특정 조건에서 Recycler View에서 항목을 숨기는 방법은 무엇입니까? (0) | 2023.07.19 |
| 입력 값이 VUEX에 전달되지 않는 이유 (0) | 2023.07.19 |
| 파괴 바인딩된 사전 내용 (0) | 2023.07.19 |
| Delphi 데이터 인식 구성 요소 사용 - 장단점 (0) | 2023.07.19 |