Comment me connecter à mon serveur SQL 64 bits avec ODBC?
J'ai récemment installé SQL Server 2008 Express sur ma machine Windows 7 Ultimate x64 home. J'ai aussi IIS 7.5 avec PHP 5.3, et j'essayais de me connecter à SQL via ADODB, mais a continué de faire cette erreur:
[Microsoft][ODBC Driver Manager] The specified DSN contains an
architecture mismatch between the Driver and Application
après avoir creusé un peu sur internet, je pense que c'est parce que le pilote ODBC du serveur SQL est destiné aux systèmes d'exploitation 32 bits, et le mien est 64. Tout d'abord, ai-je raison? Est-ce la raison pour laquelle je suis en cours d'exécution dans le trouble? Deuxièmement, si alors, comment puis-je résoudre ce problème? Y a-t-il des pilotes ODBC mis à jour qui fonctionnent avec des systèmes d'exploitation 64 bits? J'ai regardé mais n'a pas pu trouver...
6 réponses
vous avez raison en ce que cela a à voir avec les bits.
Espérons que cela aide:
--à Partir de MSDN --
gérer une source De données qui se connecte à un pilote 32 bits sous 64 bits plate-forme, utiliser c:\windows\sysWOW64\odbcad32.EXE. Pour gérer une donnée source qui se connecte à un pilote 64 bits, utilisez c:\windows\system32\odbcad32.EXE. Si vous utilisez l'odbcad32 64 bits.EXE pour configurer ou supprimer un DSN qui se connecte à un pilote 32 bits, vous recevoir ce message.
j'ai eu le même problème en essayant de relier un serveur 64 bits SQL 2012 à 'Sage Timberline' en utilisant une interface client ODBC envahissante.
je peux configurer le DSN 32 bits, mais SQL Server continue de me donner l'erreur "architecture mismatch" en essayant de créer un serveur lié en utilisant le DSN 32 bits.
j'ai essayé C:\Windows\SysWOW64\odbcad32.exe
pour ajouter le pilote. Mais quand je mets en place un serveur lié entre MAS90 et SQL Server 2008 R2, j'obtiens toujours l'erreur d'inadéquation de l'architecture. Je viens de parler à un gars de Sage et il dit que ça ne marchera pas avec l'Édition 64 bits de Sql Server. Le serveur lié ne fonctionne avec MAS90 que si L'édition de Sql Server est de 32 bits.
je parie que vous travaillez avec L'utilisateur DSNs.
selon votre point de vue, il y a une "fonctionnalité" ou un "bug" dans L'environnement Windows 64 bits --
DSNs D'Utilisateur 32 bits apparaissent dans l'administrateur 64 bits et quand les applications de client 64 bits demandent tous les DSNs disponibles -- même si les DSNs 32 bits ne peuvent pas être utilisé par l'application client 64 bits et L'administrateur.
utilisateurs de 64 bits DSNs apparaissent dans le 32-bit Administrateur et quand les applications client 32 bits demandent tous les DSNs disponibles -- même si les DSNs 64 bits ne peuvent pas être utilisé 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 un tel décalage de bitness entre le DSN et le client essayant de travailler avec lui.
la recommandation de Microsoft est de nommer votre DSNs utilisateur avec _32 ou _64, selon le bitness du pilote sur lequel ils sont baser. .. ou un bâton avec la Dsn Système.
il existe des solutions 32 et 64 bits pour la connexion que vous voulez. La petitesse de votre(Vos) application (s) client (s) -- IIS & PHP, dans ce cas-ci -- dicte la petitesse de la solution dont vous avez besoin.
si l'application 32 bits sur le système d'exploitation 64 bits (l'application que vous êtes installé sous [program files (X86)] utiliser le suivant C:\Windows\SysWOW64\odbcad32.exe
autrement l'application 64 bits et le système d'exploitation 64 bits utilisent le suivant C:\Windows\System32\odbcad32.exe
sinon vous obtiendrez une erreur comme "Architectural mismatch"
Espérons que cela permettra d'économiser de la journée de quelqu'un :)
Cela a fonctionné pour moi: Mise à jour de la solution, assurez-vous que L'application IIS n'est pas définie à 32 bits sur Windows x64. Plus d'infos: http://forum.gpsgate.com/topic.asp?TOPIC_ID=13711 à partir de: