Подтвердить что ты не робот

Как подключиться к моему 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-разрядными операционными системами? Я посмотрел, но не смог найти...

4b9b3361

Ответ 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

иначе вы получите сообщение об ошибке "Архитектурное несоответствие"

Надеюсь, это сэкономит кому-нибудь день:)