ODBC SQL Server DSN-less Spécifier le pilote 32 bits

Je travaille avec une application plus ancienne que j'ai récemment mise à jour vers .NET 4.5. L'application a utilisé des connections DSN ODBC. Cependant, dans le cas de l'application, il est accessible à partir d'un seul location sur un lecteur réseau, il n'est donc pas logique d'exiger un DSN, et cela facilite le deployment et les mises à jour pour utiliser une string de connection sans DSN. . Je fais une string de base en tant que telle:

Driver={SQL Server}; Server=; Database=; UID=; PWD= 

Le problème que j'ai est que l'application est compilée en 32 bits, mais peut être utilisée sur une machine 32 bits ou 64 bits. Sur les machines 64 bits, j'ai cette erreur:

Le DSN spécifié contient une non-concordance d'architecture entre le pilote et l'application

Ce qui signifie essentiellement qu'il essaie d'utiliser le pilote 64 bits pour l'application 32 bits. C'est assez facile à gérer, sauf que le nom du pilote pour SQL Server semble être le même pour 32 et 64 bits. Alors, comment puis-je spécifier uniquement le pilote 32 bits dans la string de connection?

Pour gérer une source de données qui se connecte à un pilote 32 bits sous une plate-forme 64 bits, utilisez c: \ windows \ sysWOW64 \ odbcad32.exe Pour gérer une source de données qui se connecte à un pilote 64 bits, utilisez c: \ windows \ system32 \ odbcad32.exe Dans les outils d'administration sur un operating system Windows 8 64 bits, il existe des icons pour la boîte de dialog Administrateur de sources de données ODBC 32 bits et 64 bits.

Si vous utilisez odbcad32.exe 64 bits pour configurer ou supprimer un DSN qui se connecte à un pilote 32 bits, vous recevrez le message d'erreur suivant:

Le DSN spécifié contient une non-concordance d'architecture entre le pilote et l'application

Pour résoudre cette erreur, utilisez le odbcad32.exe 32 bits pour configurer ou supprimer le DSN.

Les references

  • Le DSN spécifié contient une non-concordance d'architecture entre le pilote et l'application
  • Gestion des sources de données

Side Note: assurez-vous que toutes les references Copy Local propriété Copy Local est définie sur True, même les assemblys système. Je pense que le problème peut provenir de l'location des assemblages sauvegardés dans GAC, donc lors de la copy locale des assemblages, il peut être résolu