Známá stará otázka, ale zdá se, že je stále aktuální. A protože jsem za poslední 3 měsíce, co jsem hledal, nemohl najít vhodnou odpověď, domnívám se, že nyní je vhodná doba pro zveřejnění mých zjištění.
Měl jsem stejné zvláštní chování a konečně se mi to podařilo vyřešit. Moje rozvržení vypadalo takto:
- Databáze Oracle 10g R2 na Windows 2003 Server (říkejme tomu ORA)
- Počítač pro vývojáře se systémem Windows 8, Visual Studio 2012 + SSDT, Sql Express 2012, ODT 12.1.0.21 (říkejme tomu DEV)
- Sql Server 2012 na Windows 2012 Server, Oracle Client 11.2 (říkejme tomu TEST)
DEV i TEST se připojovaly k ORA. DEV hlásil sloupce VARCHAR2 jako DT_WSTR, zatímco TEST trval na tom, že jsou DT_STR.
Poté jsem na TEST nainstaloval ODT 12.1.0.21 a problém byl vyřešen. Je pozoruhodné, že jsem během instalace použil možnost „široký stroj“. Nejsem si jistý, jak velký dopad to mělo.
Zdá se, že existuje rozdíl v datových typech, které vracejí poskytovatelé Oracle OleDb v různých verzích komponent na straně klienta.