2009-08-25 2 views
1

방금 ​​SQL2005에서 SQL DB를 32 비트 -> 64 비트로 이동했습니다. OraOLEDB.Oracle Provider를 사용하여 Oracle에 연결하는 데 문제가 있습니다.SQL Server 2005 64 비트에 OPENQUERY가 이상하게 동작합니다.

Oracle 10G Client, ODAC 64 비트를 설치할 수있었습니다. Oracle 인스턴스에 연결된 서버를 추가 할 수도있었습니다. 나는 직접 연결된 서버 이름을 사용하여 쿼리를 실행할 수 있어요 : 나는 OPENQUERY를 사용하려고하면

SELECT top 10 * 
    FROM [DB0PBB0]..[DB0PBB0].[DM_CLICK] 

지금까지 그것은, 그러나, 문제가 잘 발생한다. 안녕하세요

SET FMTONLY OFF 
select * from 
OPENQUERY(DB0PBB0,'select ''hello'' from dual ') 

내가

를 얻을 :

select * from 
OPENQUERY(DB0PBB0,'select * from DB0PBB0.DM_CLICK where Date_stamp <''24-Jul-09'' and Date_stamp >= ''23-Jul-09'' ') 

SET FMTONLY OFF 
select * from 
OPENQUERY(DB0PBB0,'select * from DB0PBB0.DM_CLICK where Date_stamp <''24-Jul-09'' and Date_stamp >= ''23-Jul-09'' ') 

나는이 스크립트를 실행하는 경우 I는 열 이름, 아니 행 :(

를 얻을 : 나는 다음과 같은 시도

제 질문은 SQL05 64 비트에서 오라클에 대해 OPENQUERY를 실행 해 본 사람이 있습니까? 어떤 생각을 가지고 있는데 왜 데이터 대신 컬럼 만 가져올까요? 동일한 쿼리를 사용하여 다른 서버에서 동일한 링크를 시도했는데 성공 했으므로 행을 반환했습니다.

답변

1

SELECT * FROM DUAL이있는 행을 가져 오는 것이 쿼리 문제라는 것입니다. 귀하의 질의와 관련하여 잠재적 인 한 가지 함의는 날짜 열 (DATE_STAMP)과 VARCHAR를 비교하는 것입니다.

날짜를 비교하는 암시 적 변환에 의존해서는 안됩니다.. 대신 당신이 exemple에 대한 적절한 명시 적 기능을 사용해야합니다

select * from 
OPENQUERY(DB0PBB0,'select * 
        from DB0PBB0.DM_CLICK 
        where Date_stamp < to_date(''24-Jul-09'', ''dd-mon-rr'') 
         and Date_stamp >= to_date(''23-Jul-09'', ''dd-mon-rr'')') 
+0

답 당신에게 매우 much.Because 감사, 내가 대신 OLEDB-ODBC 래퍼의 OLEDB 드라이버를 사용할 수 있었다 – user162856