SQL 2005 64bit에서 32bit의 SQL2000이나 SQL7.0으로 링크드 서버 연결할때 오류 대처법 :: JSP 일반[SSISO Community]
 
SSISO 카페 SSISO Source SSISO 구직 SSISO 쇼핑몰 SSISO 맛집
추천검색어 : JUnit   Log4j   ajax   spring   struts   struts-config.xml   Synchronized   책정보   Ajax 마스터하기   우측부분

JSP 일반
[1]
등록일:2015-05-21 13:47:19 (0%)
작성자:
제목:SQL 2005 64bit에서 32bit의 SQL2000이나 SQL7.0으로 링크드 서버 연결할때 오류 대처법

- 원인 : MSSQL 2005 64bit에서 32bit의 SQL2000이나 SQL7.0으로 링크드 서버 연결할 때

- 서버환경

  원격지 : Microsoft SQL Server 2005 Standard Edition (64-bit)

  대상 : Microsoft SQL Server 2000 Standard Edition (32-bit) 

- 에러메시지

---------------------------------------------------------------------------------------------------

연결된 서버 "ㅌㅌGameLog1"의 OLE DB 공급자 "SQLNCLI"이(가) 메시지 "지정되지 않은 오류입니다."을(를) 반환했습니다.
연결된 서버 "ㅌㅌGameLog1"의 OLE DB 공급자 "SQLNCLI"이(가) 메시지 "이 작업을 완료하는 데 필요한 저장 프로시저가 서버에 없습니다. 시스템 관리자에게 문의하십시오."을(를) 반환했습니다.
메시지 7311, 수준 16, 상태 2, 줄 1
연결된 서버 "ㅌㅌGameLog1"에 대한 OLE DB 공급자 "SQLNCLI"의 스키마 행 집합 "DBSCHEMA_TABLES_INFO"을(를) 가져올 수 없습니다. 공급자가 인터페이스를 지원하지만 이 인터페이스를 사용하면 오류 코드가 반환됩니다.
----------------------------------------------------------------------------------------------------------------------

 

- 참고문헌

http://support.microsoft.com/kb/906954/ko

 

 

1. 위와같이 2005 64비트에서 2000 32비트로 링크드서버를 통해서 데이터를 끌어올 때 에러를 발생을 합니다.

 

2. 32비트 머신에서 '실행'에 cmd를 입력해서 윈도우커맨드창을 엽니다.

윈도우 커맨드창에 아래와 같이 입력합니다.

------------------------------------------------------------------------------------------------

osql -E -S "localhost" -i "C:\Program Files\Microsoft SQL Server\MSSQL\Install\instcat.sql"

------------------------------------------------------------------------------------------------

원본

osql -E -S <LinkedServerName> -i <Location>\instcat.sql

------------------------------------------------------------------------------------------------

 

 

3. 그러면 엄청난 숫자가 마구마구 나오고 마지막에

instcat.sql completed successfully.

가 입력이 되면서 끝이 납니다.

 

4. 그럼 아까 실행했던 원격문을 다시 실행하면 정상적으로 가져올 수 있는것을 확인할 수 있습니다.




이런 방법도 있었는데 좀 위험할거 같아서

아래 방법으로 하였다.


영문]

OLE DB provider "SQLNCLI" for linked server "SQLServer2000" returned message "Unspecified error".

OLE DB provider "SQLNCLI" for linked server "MySQLServer7" returned message "The stored procedure required to complete this operation could not be found on the server. Please contact your system administrator.".

Msg 7311, Level 16, State 2, Line 9

Cannot obtain the schema rowset "DBSCHEMA_TABLES_INFO" for OLE DB provider "SQLNCLI" for linked server "OSLO". The provider supports the interface, but returns a failure code when it is used.

 

[한글]

연결된 서버 "xxx.xxx.xxx.xxx"의 OLE DB 공급자 "SQLNCLI10"이(가) 메시지 "지정되지 않은 오류입니다."을(를) 반환했습니다.
연결된 서버 "xxx.xxx.xxx.xxx"의 OLE DB 공급자 "SQLNCLI10"이(가) 메시지 "이 작업을 완료하는 데 필요한 저장 프로시저가 서버에 없습니다. 시스템 관리자에게 문의하십시오."을(를) 반환했습니다.

메시지 7311, 수준 16, 상태 2, 줄 1
연결된 서버 "xxx.xxx.xxx.xxx"에 대한 OLE DB 공급자 "SQLNCLI10"의 스키마 행 집합 "DBSCHEMA_TABLES_INFO"을(를) 가져올 수 없습니다. 공급자가 인터페이스를 지원하지만 이 인터페이스를 사용하면 오류 코드가 반환됩니다.

 

해결방법

먼저 Microsoft의 기술 문서를 찾아 보았습니다아래 주제로 문서가 있었습니다.

 

l  64비트 SQL Server 2005 클라이언트에서 연결된 32비트 SQL Server 2000 서버 또는 연결된 SQL Server 7.0 서버로 분산 쿼리를 실행하려고 하면 오류 메시지가 나타날 수 있다(http://support.microsoft.com/kb/906954/ko)

 

기술 문서의 내용을 읽어보면 instcat.sql을 다시 실행하라는 내용입니다아무래도 겁나는 일이죠그래서 더 알아보니 위에서 나온 오류는 특정 저장 프로시저(Stored Procedure)가 없어서 발생하는 것이었습니다결국 저장 프로시저 하나만 추가해 주면 해결되는 문제였습니다다음 저장 프로시저를 32비트 버전의 SQL Server 2000(7.0) master 데이터베이스에 추가하면 됩니다.

 

create procedure sp_tables_info_rowset_64

      @table_name sysname,

      @table_schema     sysname = null,  

      @table_type nvarchar(255) = null

as

declare @Result int set @Result = 0

exec @Result = sp_tables_info_rowset @table_name, @table_schema,@table_type

[본문링크] SQL 2005 64bit에서 32bit의 SQL2000이나 SQL7.0으로 링크드 서버 연결할때 오류 대처법
[1]
코멘트(이글의 트랙백 주소:/cafe/tb_receive.php?no=34422
작성자
비밀번호

 

SSISOCommunity

[이전]

Copyright byCopyright ⓒ2005, SSISO Community All Rights Reserved.