私が知っている古い質問ですが、それでも関連があるようです。また、検索していた過去3か月間に適切な回答が見つからなかったため、今が調査結果を投稿するのに最適な時期だと思います。
私は同じ奇妙な振る舞いをして、ついにそれを解決することができました。私のレイアウトは次のようになりました:
- Windows2003Server上のOracle10gR2データベース(ORAと呼びます)
- Windows 8、Visual Studio 2012 + SSDT、Sql Express 2012、ODT 12.1.0.21を搭載した開発マシン(そのDEVと呼びましょう)
- Windows2012Server上のSQLServer2012、Oracle Client 11.2(そのTESTと呼びましょう)
DEVとTESTの両方がORAに接続していました。 DEVはVARCHAR2列をDT_WSTRとして報告していましたが、TESTはそれらがDT_STRであると主張していました。
次に、ODT 12.1.0.21をTESTにインストールすると、問題は解決しました。特に、インストール中に「マシン全体」オプションを使用しました。どれだけの影響があったのかわかりません。
クライアント側コンポーネントのバージョンによって、OracleOleDbプロバイダーから返されるデータ型に違いがあるようです。