Une vieille question que je connais, mais qui semble toujours d'actualité. Et comme je n'ai pas trouvé de réponse appropriée au cours des 3 derniers mois de recherche, je pense que c'est le moment idéal pour publier mes découvertes.
J'ai eu le même comportement curieux et j'ai finalement pu le résoudre. Ma mise en page ressemblait à ceci :
- Base de données Oracle 10g R2 sur Windows 2003 Server (appelons-la ORA)
- Machine dev avec Windows 8, Visual Studio 2012 + SSDT, Sql Express 2012, ODT 12.1.0.21 (appelons cela DEV)
- Sql Server 2012 sur Windows 2012 Server, Oracle Client 11.2 (appelons cela TEST)
DEV et TEST se connectaient à ORA. DEV signalait les colonnes VARCHAR2 comme DT_WSTR tandis que TEST insistait pour qu'elles soient DT_STR.
J'ai ensuite installé ODT 12.1.0.21 sur TEST et le problème a été résolu. J'ai notamment utilisé l'option "large machine" lors de l'installation. Je ne sais pas quel impact cela a eu.
Il semble y avoir une différence dans les types de données renvoyés par les fournisseurs Oracle OleDb entre les différentes versions des composants côté client.