Стар въпрос, който знам, но изглежда все още е актуален. И тъй като не можах да намеря подходящ отговор през последните 3 месеца, които търсих, смятам, че сега е най-добрият момент да публикувам откритията си.
Имах същото любопитно поведение и най-накрая успях да го разреша. Оформлението ми изглеждаше така:
- Oracle 10g R2 база данни на Windows 2003 Server (да я наречем ORA)
- Машина за разработка с Windows 8, Visual Studio 2012 + SSDT, Sql Express 2012, ODT 12.1.0.21 (да наречем това DEV)
- Sql Server 2012 на Windows 2012 Server, Oracle Client 11.2 (нека го наречем ТЕСТ)
И DEV, и TEST се свързваха с ORA. DEV докладваше VARCHAR2 колони като DT_WSTR, докато TEST настояваше, че те са DT_STR.
След това инсталирах ODT 12.1.0.21 на TEST и проблемът беше решен. Трябва да се отбележи, че използвах опцията "широка машина" по време на инсталацията. Не съм сигурен колко голямо е въздействието.
Изглежда има разлика в типовете данни, които се връщат от доставчиците на Oracle OleDb в различните версии на компонентите от страна на клиента.