2009-08-25 13 views
1

SQL2005からSQLデータベースを32ビット - > 64ビットに移動したばかりです。 OraOLEDB.Oracle Providerを使用してOracleに接続する際に問題が発生しています。SQL Server 2005の64ビットでOPENQUERYが変わった

Oracle 10G Client、ODAC 64ビットをインストールすることができました。また、Oracleインスタンスにリンクサーバーを追加することもできました。私は直接リンクサーバー名を使用してクエリを実行することができる午前:

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

私はOPENQUERYを使用しようとすると、これまでのところ、それは良いですが、しかし、問題が発生します。こんにちは

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

と、私はこのスクリプトを実行する場合、私は唯一の列名、ノー行:(

を得る:私は、次の試してみました

私の質問は、誰もSQL05 64ビットからOracleに対してOPENQUERYを実行しようとしていますか?任意のアイディアなぜデータの代わりに列だけを返すのですか?私は、同じリンクを持つ別のサーバで同じクエリを試してみましたが、それはうまくいって、行を返しました。

答えて

1

SELECT * FROM DUALの行が取得される可能性があるため、クエリの問題です。あなたのクエリに関して、1つの潜在的な落とし穴は、日付カラム(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

関連する問題