J'ai récemment installé SQL Server 2008 Express sur mon ordinateur personnel Windows 7 Ultimate x64. J'ai aussi IIS 7.5 avec PHP 5.3 et j'essayais de me connecter à SQL via ADODB , mais je continuais à avoir cette erreur:
[Microsoft][ODBC Driver Manager] The specified DSN contains an
architecture mismatch between the Driver and Application
Après avoir fouillé un peu sur Internet, je pense que c'est parce que le pilote SQL Server ODBC est destiné aux systèmes d'exploitation 32 bits et le mien est au 64. Tout d'abord, ai-je raison? Est-ce la raison pour laquelle j'ai des problèmes? Deuxièmement, si oui, comment puis-je résoudre ce problème? Existe-t-il des pilotes ODBC mis à jour qui fonctionnent avec les systèmes d'exploitation 64 bits? J'ai regardé mais je n'ai pas pu en trouver ...
Vous avez raison de dire que cela concerne les bits.
J'espère que cela t'aides:
--De MSDN -
Pour gérer une source de données qui se connecte à un pilote 32 bits sous 64 bits plate-forme, utilisez c:\windows\sysWOW64\odbcad32.exe. Pour gérer une donnée Si la source se connecte à un pilote 64 bits, utilisez c:\windows\system32\odbcad32.exe. Si vous utilisez le fichier odbcad32.exe 64 bits Pour configurer ou supprimer un DSN qui se connecte à un pilote 32 bits, vous devez recevoir ce message.
J'ai eu le même problème en essayant de lier un serveur SQL 2012 64 bits à 'Sage Timberline' à l'aide de l'interface client Pervasive ODBC.
Je peux configurer le DSN 32 bits, mais SQL Server continue de me donner l'erreur «incompatibilité d'architecture» lors de la tentative de création d'un serveur lié à l'aide du DSN 32 bits.
J'ai essayé le C:\Windows\SysWOW64\odbcad32.exe
pour ajouter le pilote. Mais lorsque je configure un serveur lié entre MAS90 et SQL Server 2008 R2, l'erreur d'incompatibilité d'architecture persiste. Vient de parler à un gars de Sage et il dit que cela ne fonctionnera pas avec l'édition 64 bits de Sql Server. Le serveur lié ne fonctionne avec MAS90 que si l'édition de Sql Server est 32 bits.
si une application 32 bits sur un système d'exploitation 64 bits (l'application sur laquelle vous êtes installé sous [fichiers de programme (X86)], utilisez les fichiers C.
sinon, les applications 64 bits et les systèmes d’exploitation 64 bits utilisent le code suivant C:\Windows\System32\odbcad32.exe
sinon, vous obtiendrez une erreur comme "incompatibilité architecturale"
J'espère que cela sauvera la journée de quelqu'un :)
Je parie que vous travaillez avec des DSN utilisateur.
Selon votre perspective, il existe une "fonctionnalité" ou un "bogue" dans l'environnement Windows 64 bits -
Les DSN utilisateur 32 bits s'affichent dans l'administrateur 64 bits et lorsque les applications client 64 bits demandent tous les DSN disponibles, même si les DSN 32 bits ne peuvent pas être utilisés par l'application client 64 bits et l'administrateur .
Les DSN utilisateur 64 bits s'affichent dans l'administrateur 32 bits et lorsque les applications client 32 bits demandent tous les DSN disponibles, même si les DSN 64 bits ne peuvent pas être utilisés par l'application client 32 bits et l'administrateur .
Le message d'erreur que vous décrivez apparaît chaque fois qu'il y a une telle discordance entre le DSN et le client qui tente de l'utiliser.
La recommandation de Microsoft est de nommer vos noms de source de données utilisateur avec _32 ou _64, en fonction du nombre de bits du pilote sur lequel ils sont basés ... ou de s'en tenir aux noms de source de système.
Il existe des solutions 32 bits et 64 bits pour la connexion souhaitée. Le nombre de bits de vos applications clientes - IIS et PHP, dans ce cas, détermine le nombre de bits de la solution dont vous avez besoin.
Cela a fonctionné pour moi: Solution mise à jour, assurez-vous que l'application IIS n'est PAS définie sur 32 bits sous Windows x64. Plus d'infos: http://forum.gpsgate.com/topic.asp?TOPIC_ID=13711 De: