2009-12-23 1 views
16

Недавно я установил SQL Server 2008 Express на свой домашний компьютер Windows 7 Ultimate x64. У меня также есть IIS 7.5 с PHP 5.3, и я пытался подключиться к SQL через ADODB, но продолжал получать эту ошибку:Как подключиться к моему 64-разрядному SQL Server с помощью ODBC?

[Microsoft][ODBC Driver Manager] The specified DSN contains an 
architecture mismatch between the Driver and Application 

После этого небольшое количество рыть в интернете, я думаю, что это происходит потому, что Драйвер ODBC для SQL Server предназначен для 32-разрядных операционных систем, а мой 64. Прежде всего, я прав? Это причина, по которой я столкнулся с проблемой? Во-вторых, если да, то как это исправить? Существуют ли обновленные драйверы ODBC, которые работают с 64-разрядными операционными системами? Я смотрел, но не смог найти ...

ответ

25

Вы правы в том, что это связано с битами.

Надеется, что это помогает:

--from MSDN -

To manage a data source that connects to a 32-bit driver under 64-bit platform, use c:\windows\sysWOW64\odbcad32.exe. To manage a data source that connects to a 64-bit driver, use c:\windows\system32\odbcad32.exe. If you use the 64-bit odbcad32.exe to configure or remove a DSN that connects to a 32-bit driver you will receive this message.

+0

спасибо! Я поражен тем, что трудно найти это! – Guillermo

+0

Это работало и на меня ... после 30 + минут беспорядков, потому что я скопировал неправильный путь. Если вы читаете эту статью, C: \ Windows \ SysWOW64 \ odbcad32.exe - это тот, который вы хотите. –

+0

Спасибо, был полезен. :) – Dharmavir

1

Я держу пари, вы работаете с DSNs пользователя.

В зависимости от вашей точки зрения, есть «особенность» или «ошибка» в 64-битной среде Windows -

  1. DSNs 32-разрядные пользователя отображаются в 64-битном администратора и при 64 -битные клиентские приложения запрашивают все доступные DSN - хотя 32-разрядные DSN не могут быть , используются 64-разрядным клиентским приложением и администратором.

  2. DSNs

    64-разрядных пользователя отображается в 32-битный Administrator и когда 32-разрядные клиентские приложения просят все доступный DSNs - даже несмотря на то, 64-разрядных DSNs не могут быть используется по 32-битному клиенту приложение и администратор.

Сообщение об ошибке, которое вы описываете, появляется в любое время, когда существует такое несоответствие битты между DSN и клиентом, пытающимся работать с ним.

Рекомендация Microsoft заключается в том, чтобы назвать ваши Пользовательские DSN с _32 или _64, в зависимости от битности драйвера, на котором они основаны ... или придерживаться системных DSN.

Существуют 32-разрядные и 64-разрядные решения для требуемого соединения. Битность вашего клиентского приложения (-ов) - IIS & PHP, в данном случае - диктует битту необходимого вам решения.

+0

Я действительно пытался настроить вещи как системные DSN. Если вы хотите, я по существу повторно задал этот вопрос в Server Fault, потому что это больше касается управления сервером, чем программирования. Это все еще не разрешено, поэтому, если вы думаете, что можете его решить, обязательно! http://serverfault.com/questions/97074/ – SoaperGEM

2

Я попробовал C:\Windows\SysWOW64\odbcad32.exe, чтобы добавить драйвер. Но когда я установил связанный сервер между MAS90 и SQL Server 2008 R2, я все еще получаю ошибку несоответствия архитектуры. Просто поговорил с парнем из Sage, и он говорит, что он не будет работать с 64-разрядной версией Sql Server. Связанный сервер работает с MAS90, только если версия Sql Server 32-разрядная.

+3

«Просто поговорил с парнем» на самом деле не ссылка – Dhara

4

У меня была такая же проблема, связанная с подключением 64-битного SQL-сервера SQL к «Sage Timberline» с использованием Pervasive ODBC Client Interface.

Я могу настроить 32-разрядный DSN, но SQL Server продолжает давать мне ошибку «несоответствие архитектуры» при попытке создать связанный сервер с использованием 32-битного DSN.

+0

Скотт, у которого есть эта проблема, смогли ли вы что-нибудь сделать? –

1

если 32 разрядное приложение на 64-битной операционной системы (приложения вы установлены под [программных файлов (X86)] с помощью следующей C: \ Windows \ SysWOW64 \ odbcad32.exe

иначе 64 битное приложение и 64 разрядные операционная система с помощью следующей C: \ Windows \ System32 \ odbcad32.exe

иначе вы получите сообщение об ошибке, как "Architectural несоответствия"

Надеется, что это спасет чей-то день :)

Смежные вопросы