access database engine x32
В настоящее время у нас есть основная проблема с использованием Microsoft Access Database Engine 2010. Механизм поставляется в 64-битной и 32-битной формах, что хорошо. Однако, по-видимому, вам нужно всегда устанавливать 32-разрядную версию, если хост-процесс всегда 32-битный. Хорошо, мы можем это сделать.
Наше программное обеспечение имеет дело с большим количеством устаревших компонентов, которые являются 32-разрядными, и большая часть из них находится в коде VB6, который генерирует 32-битную сборку. Итак, мы исходим из предположения, что драйвер также должен быть установлен как 32-разрядный. Действительно, когда мы устанавливаем 32-разрядные драйверы на 64-разрядной машине и запускаем наши 32-разрядные приложения, она работает правильно.
Однако проблема начинается с того, что в системе установлена 64-разрядная версия Office 2010. Поверьте мне, мы попытались обучить пользователей тому, что 64-битный Office в значительной степени не нужен, безрезультатно. Когда компьютеры сошли с конвейера с установленными 64-битными версиями, мы не сможем поддерживать запросы поддержки, когда наше программное обеспечение что-то сломает. Либо 64-разрядный Office нарушает нашу установку, либо наша установка нарушает их версию Office, но это не очень хорошо. Еще одна проблема заключается в том, что не-устаревшее программное обеспечение иногда устанавливает 64-битные драйверы (как и должно быть), и обе версии просто не сосуществуют разумным образом. Либо наше программное обеспечение ломается, либо их программное обеспечение ломается.
Итак, кому-нибудь удалось найти способ, чтобы 32-разрядные драйверы сосуществовали с 64-битными установками? Я видел, что установка с флагом /passive позволяет устанавливать два, и наш установщик использует пассив. Оба устанавливаются, но один раз в системе либо наше программное обеспечение больше не работает, либо Office постоянно ремонтирует свою установку. Есть ли разумный способ сделать эту работу?
The version is SP2, Microsoft Access Database Engine (32-bit), microsoft Access Database Engine 2010 is a package that will ease the data transfer between Office and non-Office applications. It will install a set of components that facilitate the transfer of data between existing Microsoft Office files such as Microsoft Office Access 2010 (*.mdb and *.accdb).
Знания
Изучите основы и оттачивайте навыки для повышения эффективности работы в AutoCAD
Support
Проблема
При попытке установить 64-разрядную СУБД Access на компьютер с 32-разрядной версией Microsoft Office (2007, 2010 или 2013) появляется сообщение об ошибке:
«Невозможно установить 64-разрядную версию Microsoft Access Database Engine 2010, поскольку установлены 32-разрядные версии продуктов. »
Причины
Решение
ПИСЬМЕННЫЕ ИНСТРУКЦИИ
Решение для установки 64-разрядной СУБД Access 2010 на компьютер с 32-разрядной версией Microsoft Office 2007, 2010 или 2013
Перед началом работы откройте редактор реестра (введите «regedit» в поле поиска Windows под меню «Пуск» и выберите regedit.exe). Убедитесь в ОТСУТСТВИИ значения «mso.dll» для следующего ключа реестра: «HKEY_LOCAL_MACHINESOFTWAREMicrosoftOffice14.0CommonFilesPaths».
Это значение ключа реестра присутствует, если на компьютер была установлена 64-разрядная версия Microsoft Office, в таком случае вы должны иметь возможность установить 64-разрядную СУБД Access без использования этого решения.
Решение
2. Введите путь и имя файла установки 64-разрядной версии СУБД Access 2010, после чего введите пробел и «/passive» (это позволит выполнить установку без отображения сообщений об ошибках).
32-битный Excel и 64-битный SQL Server
Прочитать в SQL Server табличку из Excel… В самом деле, что может быть проще? Для этого существует масса возможностей. Есть инструмент Integration Services, который бывшие DTS, есть мастер импорта/экспорта, который «за сценой» то же самое, можно по-быстрому сваять собственное ADO.NET-приложение, наконец, если неохота стрелять из пушек по воробьям, можно воспользоваться механизмом прилинкованных серверов, известным, как DTS, еще со времен семерки, который позволяет легко и элегантно увидеть теоретически любой ODBC/OLE DB-достижимый источник в виде таблицы (совокупности таблиц) или результата непосредственного (ad hoc) запроса. Так было до тех пор, пока 64-битная архитектура не перестала быть чем-то из области hi end и пришла на ноутбуки разработчиков и пользователей. Обычный пользователь, наверное, все-таки вряд ли будет ставить себе сервер баз данных, но для разработчика отнюдь не экзотична ситуация, когда на одной х64-машине уживаются 64-битный SQL Server с 32-битным MS Office. В этом случае создание прилинкованного сервера на Excel или Access вызывает проблему, потому что драйвера для них, понятно, 32-битные, которые SQL Server, будучи 64-битным, не понимает. Нет у него в списке известных ему провайдеров ничего похожего, хотя офис со всеми прибамбасами, включая connectivity, на компе стоит.
Рис.1
Соответственно, попытка использовать прилинкованный сервер на Excel, как описано в документации, приводит к ошибке Msg 7302, Level 16, State 1, Line 1
Cannot create an instance of OLE DB provider «Microsoft.ACE.OLEDB.12.0» for linked server…
Возникает извечный вопрос «что делать»?
Ну как что делать. Поставить 64-битного провайдера, разумеется. Вот здесь (Microsoft Access Database Engine 2010 Redistributable) их как раз раздают две штуки: AccessDatabaseEngine.exe и AccessDatabaseEngine_x64.exe. Скачиваем ту, которая 64-битная, запускаем установку и получаем отлуп.
Рис.2
То есть если бы рядом с 64-битным SQL Server не стоял 32-битный Office, то за ради Б-га, но высокие технологии у нас развились до такой высоты, что непонятно, что делать. Сносить 32-битный Office и ставить вместо него 64-битный только для того, чтобы залезть SQL Serverом в Excelную табличку? Сносить 64-битный SQL Server и ставить взамен 32-битный только тоже для того же? Не думаю, что это гибкий вариант решения, да и не всегда подобная возможность имеет место быть. Например, как пишет мужик, The MS Access database is a production environment at the customers site, and it is not an option for me to de-install it and install a 64 bits version. It is also not an option to de-install the existing SQL Server 64 bit and install the 32 bits version, of course. An additional installation of a SQL Server 32 bits, only providing the link to MS Access would be the only option then. I find this quite horrible. Начинается непонимайка. Since there is no 64-bit Jet, you need download and install the 64-bit version of «Microsoft Access Database Engine 2010 Redistributable». — Thanks for your answer, but I when I install the AccessDatabaseEngine_X64.exe I get the following error (см.Рис.1) — Please refer to this KB article: support.microsoft.com/kb/2269468 — The article in the link in your last message tells to de-install all Office 32 bits products. That makes no sense to me, because the goal is to connect to the 32 bits MS Access database. — You need to install the 64-bit version of “Microsoft ACE OLEDB Provider” to connect to an Access file (32-bit or 64-bit) from SQL Server. — But I tried to install the 64 bits driver, but it is giving me an installation error. — The previous KB article explains the cause and provide the solution, you can refer to it. — You are guiding me in circles.
Собственно, проблема в том, чтобы заставить поставиться 64-битную версию Microsoft ACE OLEDB Provider рядом с 32-битным офисом. Почему этого не удается сделать в лоб — вопрос философский, и на его тему тоже сломано немало копий. The fact that they cannot forces us to compile two different versions of our application; one specifically for x86 platform and one for x64 platform. Then we have to somehow determine which version of the ACE driver is installed so we know which version (32 or 64 bit) of our application to install. Life would be much simplier if we could just compile our app for the default AnyCPU and then both 32 and 64 dataproviders were allowed to be installed… Why can’t 32 and 64 bit ACE coexist? — It’s based upon the fact that Microsoft does not support the side by side install of 32 and 64-bit Microsoft Office 2010 or their dependent components. — I’m sorry, but that’s not a very helpful answer to the question. Q: Why can’t the 32 and 64 bit versions of the Microsoft Access Database Engine 2010 Redistributable (AccessDatabaseEngine.exe and AccessDatabaseEngine_X64.exe) both be installed on the same machine? A: Microsoft does not support the side by side install of 32 and 64-bit Microsoft Office 2010. That’s not answering, that’s just repeating the question in other words. Q: Why can’t I do this? A: Because we don’t support it. Q: Why can’t you support it? A: Because we don’t support it.
В качестве обходного пути решения для себя я использовал установку AccessDatabaseEngine_X64.exe с ключом /passive, который позволяет 64-битной версии провайдера встать бок о бок с 32-битной версией Office. Необходимо подчеркнуть, что этот способ не является официально поддерживаемым Microsoft, имеются также предостережения относительно возможных проблем с несовместимостью. When I installed the driver AccessDatabaseEngine_x64.exe… MS Office Pro Plus starts a MS Configuration Process that can take up to a minute or two before a document or Office program opens. If office 2010 32 bit is installed and if 64-bit ace is installed with /passive, then **every** time you run Access 2010, you get an automatic installation routine that resets to the 32-bit drivers for office. В моем случае (Office 2013 Pro Plus, SQL Server 2012 Developer Ed., Windows 8.1) видимых проблем (тьфу-тьфу-тьфу) пока не возникло, однако еще раз хочу заметить, что это все, что называется, as is и без каких-либо обязательств.
Скачиваю AccessDatabaseEngine_x64.exe, создаю System Restore Point на всякий пожарный (хотя, по-моему, при обновлении офисных компонент она и так создается автоматически), ставлюсь из командной строки. Вот возможные ключи:
Рис.3
Рис.4
В отличие от Рис.2 установка запускается
Рис.5
и где-то через полминуты сухо, по-деловому завершается без всяких фанфар, ОК, ура, я встала и т.д. Сейчас мы поглядим, какой это Сухов. На Рис.1 из контекстного меню Providers говорим Refresh и, что называется, чувствуем разницу.
Рис.6
Это вселяет. По-быстрому сварганил незатейливый xslx:
Рис.7
В SQL Server создаем прилинкованный сервер на этот Excel:
и с замиранием читаем:
Msg 7399, Level 16, State 1, Line 1
The OLE DB provider «Microsoft.ACE.OLEDB.12.0» for linked server «XlsLnkSrv» reported an error. The provider did not give any information about the error.
Msg 7303, Level 16, State 1, Line 1
Cannot initialize the data source object of OLE DB provider «Microsoft.ACE.OLEDB.12.0» for linked server «XlsLnkSrv».
Нет, (Excel забыл закрыть) все-таки гол!
Рис.8
но для нее (на всякий случай напомню) требуется вначале сделать
Члены DBEngine (DAO) DBEngine members (DAO)
Область применения: Access 2013, Office 2013 Applies to: Access 2013, Office 2013
Объект DBEngine — это объект верхнего уровня объектной модели DAO. The DBEngine object is the top level object in the DAO object model.
Методы Methods
BeginTrans BeginTrans
Начинает новую транзакцию. Begins a new transaction. База данных для чтения и записи. Read/write Database.
Завершает текущую транзакцию и сохраняет изменения. Ends the current transaction and saves the changes.
Копирует и сжимает закрытую базу данных, предоставляя возможность изменить ее версию, порядок сортировки и шифрование. Copies and compacts a closed database, and gives you the option of changing its version, collating order, and encryption. (Только для рабочих областей Microsoft Access.) (Microsoft Access workspaces only). . .
Создает новый объект Базы данных, сохраняет базу данных на диск и возвращает открытый объект базы данных (только для рабочих пространств Microsoft Access). Creates a new Database object, saves the database to disk, and returns an opened Database object (Microsoft Access workspaces only). . .
Создает новый объект Workspace. Creates a new Workspace object.
Бездействие Idle
Приостанавливать обработку данных, позволяя яд баз данных Microsoft Access выполнять любые ожидающие задачи, такие как оптимизация памяти или время ожидания страниц (только для рабочей области Microsoft Access). Suspends data processing, enabling the Microsoft Access database engine to complete any pending tasks, such as memory optimization or page timeouts (Microsoft Access workspaces only).
Одно из значений WorkspaceTypeEnum. One of the WorkspaceTypeEnum values.
ПРИМЕЧАНИЕ: Рабочие области ODBCDirect не поддерживаются в Microsoft Access 2013. NOTE: ODBCDirect workspaces are not supported in Microsoft Access 2013. Используйте ADO, если вы хотите получить доступ к внешним источникам данных без использования ядра СУБД Microsoft Access. Use ADO if you want to access external data sources without using the Microsoft Access database engine.
Открывает объект Connection в источнике данных ODBC (только для рабочей области ODBCDirect). Opens a Connection object on an ODBC data source (ODBCDirect workspaces only).
Открывает указанную базу данных и возвращает ссылку на объект Database, который ее представляет. Opens a specified database and returns a reference to the Database object that represents it.
Введите сведения о под соединении для источника данных ODBC в реестре Windows. Enters connection information for an ODBC data source in the Windows Registry. Драйверу ODBC необходимы сведения о под подключениех при открытом источнике данных ODBC во время сеанса. The ODBC driver needs connection information when the ODBC data source is opened during a session.
Откат Rollback
Завершает текущую транзакцию и восстанавливает состояние баз данных в объекте Workspace в состоянии, в который они находились на момент начала текущей транзакции. Ends the current transaction and restores the databases in the Workspace object to the state they were in when the current transaction began.
SetOption SetOption
Временно переопределяет значения ключей ядер ядер базы данных Microsoft Access в реестре Windows (только для рабочей области Microsoft Access). Temporarily overrides values for the Microsoft Access database engine keys in the Windows Registry (Microsoft Access workspaces only).
Свойства Properties
Задает пароль, используемый для создания рабочей области по умолчанию при ее инициализации. Sets the password used to create the default Workspace when it is initialized. Для чтения и записи, String. Read/write String.
Задает или возвращает значение, которое указывает, какой тип рабочей области будет использоваться следующим созданным объектом Workspace. Sets or returns a value that indicates what type of workspace will be used by the next Workspace object created.
Задает имя пользователя, используемого для создания рабочей области по умолчанию при ее инициализации. Sets the user name used to create the default Workspace when it is initialized. Для чтения и записи, String. Read/write String.
Ошибки Errors
Возвращает коллекцию Errors, которая содержит все сохраненные объекты Error для указанного объекта. Returns an Errors collection that contains all of the stored Error objects for the specified object. Только для чтения. Read-only.
IniPath IniPath
Задает или возвращает сведения о ключе реестра Windows, который содержит значения для ядвижка базы данных Microsoft Access (только для рабочей области Microsoft Access). Sets or returns information about the Windows Registry key that contains values for the Microsoft Access database engine (Microsoft Access workspaces only).
Задает или возвращает время в секундах до возникновения ошибки при попытке входа в базу данных ODBC. Sets or returns the number of seconds before an error occurs when you attempt to log on to an ODBC database.
Properties Properties
Возвращает коллекцию Properties для указанного объекта. Returns the Properties collection of the specified object. Только для чтения. Read-only.
Версия Version
Rreturns the version of DAO currently in use. Rreturns the version of DAO currently in use. Только для чтения, String. Read-only String.
Workspaces Workspaces
Возвращает коллекцию Workspaces, которая содержит все активные незашифленные объекты рабочей области. Returns a Workspaces collection that contains all of the active, unhidden Workspace objects. Только для чтения. Read-only.