Как подключиться к моему 64-разрядному SQL Server с помощью ODBC?
Недавно я установил SQL Server 2008 Express на свой домашний компьютер Windows 7 Ultimate x64. У меня также есть IIS 7.5 с PHP 5.3, и я пытался подключиться к SQL через ADODB, но продолжал получать эту ошибку:
[Microsoft][ODBC Driver Manager] The specified DSN contains an
architecture mismatch between the Driver and Application
После небольшого количества выкапывания в Интернете, я думаю, это связано с тем, что драйвер ODBC для SQL Server предназначен для 32-разрядных операционных систем, а мой 64. Прежде всего, я прав? Это причина, по которой я столкнулся с проблемой? Во-вторых, если да, то как это исправить? Существуют ли обновленные драйверы ODBC, которые работают с 64-разрядными операционными системами? Я посмотрел, но не смог найти...
Ответы
Ответ 1
Вы правы в том, что это связано с битами.
Надеюсь, что это поможет:
- из MSDN -
Управление источником данных, который подключается к 32-разрядному драйверу под 64-разрядным платформы, используйте c:\windows\sysWOW64\odbcad32.exe. Управление данными источник, который подключается к 64-битовому драйверу, используйте C:\WINDOWS\system32\odbcad32.exe. Если вы используете 64-разрядный odbcad32.exe для настройки или удаления DSN, который подключается к 32-битовому драйверу, вы будете получите это сообщение.
Ответ 2
У меня была такая же проблема, связанная с подключением 64-битного SQL-сервера SQL к "Sage Timberline" с использованием клиентского интерфейса Pervasive ODBC.
Я могу настроить 32-битный DSN, но SQL Server продолжает давать мне ошибку "несоответствие архитектуры" при попытке создать связанный сервер с использованием 32-битного DSN.
Ответ 3
Я попробовал C:\Windows\SysWOW64\odbcad32.exe
добавить драйвер. Но когда я установил связанный сервер между MAS90 и SQL Server 2008 R2, я все еще получаю ошибку несоответствия архитектуры. Просто поговорил с парнем из Sage, и он говорит, что он не будет работать с 64-разрядной версией Sql Server. Связанный сервер работает с MAS90, только если версия Sql Server 32-разрядная.
Ответ 4
Я уверен, что вы работаете с пользовательскими DSN.
В зависимости от вашей перспективы есть "функция" или "ошибка" в 64-битной среде Windows -
-
32-разрядные пользовательские DSN отображаются в 64-разрядном администраторе, и когда 64-разрядные клиентские приложения запрашивают все доступные DSN, даже если 32-разрядные DSN не могут использоваться 64-разрядным клиентским приложением и Adminstrator.
-
64-разрядные пользовательские DSN отображаются в 32-разрядном администраторе, и когда 32-разрядные клиентские приложения запрашивают все доступные DSN, даже если 64-разрядные DSN не могут использоваться 32-разрядным клиентским приложением и Adminstrator.
Сообщение об ошибке, которое вы описываете, появляется в любое время, когда существует такое несоответствие битов между DSN и клиентом, пытающимся работать с ним.
Рекомендация Microsoft заключается в том, чтобы называть ваши пользовательские DSN с _32 или _64, в зависимости от битности драйвера, на котором они основаны... или придерживаться системных DSN.
Существуют 32-разрядные и 64-разрядные решения для требуемого соединения. Битность ваших клиентских приложений - IIS и PHP - в этом случае - определяет битту требуемого решения.
Ответ 5
если 32-разрядное приложение в 64-разрядной операционной системе (приложение, установленное в [программные файлы (X86)], используйте следующие C:\Windows\SysWOW64\odbcad32.exe
в противном случае 64-разрядное приложение и 64-разрядная операционная система используют следующие C:\Windows\System32\odbcad32.exe
иначе вы получите сообщение об ошибке "Архитектурное несоответствие"
Надеюсь, это сэкономит кому-нибудь день:)
Ответ 6
Это сработало для меня:
Обновленное решение, убедитесь, что приложение IIS не настроено на 32-разрядное в x64 Windows. Больше информации:
http://forum.gpsgate.com/topic.asp?TOPIC_ID=13711
из:
http://forum.gpsgate.com/topic.asp?TOPIC_ID=13622