2009-08-25 1 views
1

Ich habe gerade eine SQL DB von SQL2005 32 Bit -> 64 Bit verschoben. Ich habe ein Problem bei der Verbindung mit Oracle mit dem OraOLEDB.Oracle Provider.OPENQUERY auf SQL Server 2005 64bit verhält sich seltsam

Ich konnte Oracle 10G Client, ODAC 64 Bit installieren. Ich konnte auch einen Verbindungsserver zur Oracle-Instanz hinzufügen. Ich bin in der Lage, eine Abfrage mit den verknüpften Server-Namen direkt auszuführen:

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

Bisher ist es gut, aber das Problem tritt auf, wenn ich versuche, OPENQUERY zu verwenden. Ich habe versucht, die folgenden:

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'' ') 

und ich bekomme nur die Spaltennamen, keine Zeilen :(

wenn ich dieses Skript ausführen:

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

I

bekommen

hallo

Meine Frage ist, hat jemand OPENQUERY gegen Oracle von einem SQL05 64bit versucht? Irgendwelche? Idee warum würde ich nur Spalten zurück anstelle von Daten bekommen? Ich habe die gleiche Abfrage auf einem anderen Server mit dem gleichen Link versucht und es funktionierte, es gab Zeilen zurück.

Antwort

1

Da Sie Zeilen mit der SELECT * FROM DUAL bekommen sind die Chancen, dass es ein Abfrageproblem ist. In Bezug auf Ihre Anfrage besteht die Gefahr, dass Sie eine Datenspalte (DATE_STAMP) mit einem VARCHAR vergleichen.

Sie sollten sich nicht auf implizite Konvertierungen verlassen, um Daten zu vergleichen. Stattdessen sollten Sie die entsprechenden expliziten Funktionen, für exemple verwenden:

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

Danke sehr much.Because Ihre Antwort, ich war in der Lage, die OLEDB-Treiber verwenden anstelle des OLEDB-ODBC-Wrapper – user162856