Ошибка при инициализации поставщика access

  • Remove From My Forums
  • Question

  • User-595193528 posted

    Hi All,

    I’m using .Net with MS Access database and I try to add new database connection manually using Server explorer in .Net IDE.

    When I do this I’m getting the following error: «Test connection failed because of an error in initializing provider. Cannot start your application. The work group file is missing or opened exclusively by another user».

    Please help me doing this…

Answers

  • User1759999623 posted

    It sounds like that the Access database you’re trying to use is already open somewhere else.  Verify that the Access database is closed before trying to open it in the Server Explorer.  Additionally, make sure that it is closed in the Server Explorer
    before trying to use it within your application.

    • Marked as answer by

      Thursday, October 7, 2021 12:00 AM

Я преобразовал приложение Access 2000 в Access 2007, приложение подключается к MsSql-2000 с помощью ADO.
2 проблемы:
1. Не могу сделать фильтр на форме (правый клик -> фильтр) — ничего не возвращает.
2. Я продолжаю получать сообщение «Не удалось инициализировать поставщика данных», в основном, когда я пытаюсь поиграть с фильтром.

У кого-нибудь есть идея?

2 ответа

По моему опыту, ошибка «Не удалось инициализировать поставщика данных» чаще всего возникает из-за того, что строка подключения не идеальна для подключения ADO. Ошибка не возникает до тех пор, пока набор записей ADO, использующий неисправное соединение, не будет создан и привязан к форме или отчету.

При работе с проектом Access (см.: Создайте проект Access), убедитесь, что сервер и исходная база данных (если они предоставлены) проверены на правильность в свойствах связи с данными. В проектах Access строка подключения встроена в сам проект.

При использовании строки подключения в VBA убедитесь, что указан правильный поставщик данных. Для соединений ADO в Access 2003 (MDB и ADP) поставщик должен быть Microsoft.Access.OLEDB.10.0, иначе наборы записей нельзя будет привязать к формам и отчетам.

Примере:

' Bind an Access 2003 ADO recordset to an Access form
' Note that the Data Provider is SQL Server (because "Data Provider = SQLOLEDB")

' Declare objects
Dim cn As ADODB.Connection
Dim rs As ADODB.Recordset

Set cn = New ADODB.Connection

With cn

     .CursorLocation = adUseClient

    ' LockType must be adLockOptimistic
    ' See: http://support.microsoft.com/kb/281998
    .LockType = adLockOptimistic

    .Open "Provider=Microsoft.Access.OLEDB.10.0;" & _
        "Data Source=ServerName;"
        "Initial Catalog=OptionalDatabaseName;" & _
        "Trusted_Connection=Yes;" & _
        "Data Provider=SQLOLEDB;"

    Set rs = .Execute("SELECT order_id FROM dbo.Orders")

End With

' This will throw the error "Data provider could not be initialized"
' if the Provider is incorrect
Set Me.Recordset = rs

Обратите внимание, что проект Access создаст ошибку «Не удалось инициализировать поставщика данных», если основное соединение (т. е. канал передачи данных) неверно и с помощью VBA была предпринята попытка назначить объект набора записей набору записей формы. Таким образом, последняя строка примера завершится ошибкой, если основное соединение проекта Access неверно. (Это так, даже если подключение проекта полностью отличается от подключения объекта набора записей.)


1

Mike
31 Май 2011 в 23:49

Кроме того, используя Teradata ODBC Connection (Teradata, а не Microsoft для Teradata), вы можете привязываться к формам с помощью ADO. Ошибка поставщика данных не инициализирована появится, если вы используете таблицу данных в качестве формы и пытаетесь выполнить фильтрацию на листе.


0

Ted Boosalis
16 Май 2013 в 20:50

 
S
 
(2002-09-24 12:24)
[0]

При коннекте через Ado к mdb базе. Выскакивает ошибка: «не могу открыть таблицу MsysAccounts» в файле системной базы данных. Подскажите как с этим бороться?


 
BlackTiger
 
(2002-09-24 14:20)
[1]

А база случайно не запаролирована? MDAC какой стоит?

Похоже что на машине просто нет Access»а.


 
S
 
(2002-09-24 16:31)
[2]

Пароля нет. Если взять базу данных и открыть Acess»ом то открывается. Эта проблема у меня и на D6 и D5.


 
sniknik
 
(2002-09-24 16:38)
[3]

читайте хелпы именно для этого они и предназначены.

Не удается открыть таблицу «MSysAccounts» в файле системной базы данных. (Ошибка 3173)

Данная операция требует наличия файла System.mdw, который содержит параметры защиты и настройки для таблиц базы данных Microsoft Jet.

Возможные причины:

В реестре Microsoft® Windows в разделе HKEY_LOCAL_MACHINESOFTWAREMicrosoftOffice9.0AccessJet4.0EnginesJet значение параметра SystemDB указывает на сетевой диск, подключение к которому отсутствует. Проверьте, что сетевой диск доступен, и повторите операцию.

Файл System.mdw поврежден. Если имеется резервная копия файла System.mdw, поместите ее в каталог, указанный в параметре реестра SystemDB.


 
S
 
(2002-09-24 17:00)
[4]

Спасибо «sniknik» по этому ключу действительно были порченные пути. Формата дос. Но исправление их не привело к ожидаемому эффекту.


 
sniknik
 
(2002-09-24 17:26)
[5]

А что теперь говорит?


 
S
 
(2002-09-24 17:38)
[6]

теперь стал говорить не могу открыть «MSysAccounts» в файле системной базы данных. (Эта база данных востанавливается при удалении, если запустить Access).Help говорит, что у него отсутствует данный раздел. Перед удалением я туда залез там нет это базы, а есть только запросы. Запросы в точности восстанавливаются.


 
sniknik
 
(2002-09-24 17:44)
[7]

действительно нет или не видно?

в меню Access Tools->Options->View поставь галочки на

Hiden Objects

System Objects

и попробуй создать юзера какого нибудь. по идее должна восстановится (или еще чтонибудь ужасное скажет)


 
S
 
(2002-09-25 08:02)
[8]

Обнаружился парадокс! При открытии одних баз все впорядке, при открытии выскакивает эта ошибка. Те в которые меня не пускает возможно были сделаны в 97 и преобразованы в 2000.


 
sniknik
 
(2002-09-25 10:54)
[9]

Забавно. А не затруднит прислать мне базу в которую тебя не пускает? (сархивируй так чтобы было < 5mg)


 
S
 
(2002-09-25 11:07)
[10]

Я выслал Вам таблицу на мыло, указанное в анкете. Буду признателен за любые предложения.


 
sniknik
 
(2002-09-25 11:35)
[11]

см. почту если что пиши.


   Dmitry_333

27.04.19 — 14:13

Всем почти летней весенней субботы!-)

Написал обработку на свом компе, в начальной своей задаче она подрубается к бд access для последующего изъятия оттудова данных, все прекрасно работает. Перенес на комп с Win Server 2008 и все встало.

Сначала была проблема с созданием COMОбъект(«ADODB.Connection»), о чем вопрошал на форуме на прошлой неделе.

Ладно, эту проблему разрешил, но следующая настигла буквально на следующей строчке.

При попытке Connection.Open(СтрокаПодключения) выходит ошибка «Произошла исключительная ситуация (Microsoft OLE DB Provider for ODBC Drivers): [Microsoft][Диспетчер драйверов ODBC] Источник данных не найден и не указан драйвер, используемый по умолчанию.

Собственно, если загуглить эту ошибку, ответов очень много, в том числе и на данном форуме, но 90% из них касаются подключения к базам MS SQL. Мне из этого ничего не помогло.

Теме не менее, что было предпринято и проделано:

1. Скачан свежий MDAC и переустановлен.

2. Дважды скачаны и установлены драйверы для Access

3. Дважды переустановлен Office

Ничто из этого не помогло ни разу.

Операционка 64 бит, офис 32 бит, 1С 32 бит

На ноуте, где тестировалась эта же обработка, расклад по битности такой же, только ОС Windowc 7.

В администраторе источников данных ODBC все один в один, перепроверил несколько раз.

Что еще предпринять, даже предположить не могу…:)

   NorthWind

101 — 27.04.19 — 21:57

(99) Он про ошибку инициализации поставщика говорит. Ошибка явно ADODB. Больше всего похоже, что у него среда исполнения 64-битная и 32-битные провайдеры не работают, но по контексту ничерта не непонятно, как такое может быть, тем более что из-под этой 1Ски в диалоге Data Link тесты соединения проходят. НаСервере тоже проверили. Что это может быть?

   NorthWind

106 — 06.05.19 — 20:31

(105) Мне казалось, что ADO с OLEDB провайдером для Access — это точно in-process OLE сервер. И оно реально есть в 32-битной и 64-битной версии, причем ТС в (58) жаловался, что 64-битная версия движка (без MS Office) у него отказалась ставиться. Тут очень много нестыковок — 32-битная 1С, которая не дружит с 32-битным провайдером ADO, 64-битная винда 2008, которая не хочет ставить 64-битный Access Database Engine… Одни загадки.

   Сияющий в темноте

107 — 06.05.19 — 22:18

(106)если нечаянно настроить ком плюс,то и не инпроцесс будет,ине факт,что поставится,т.к.нужно ком плюс тушить на время установки.

просто очень похоже,что бобик зарыт в этой яме.

   Dmitry_333

108 — 07.05.19 — 09:41

Самое мерзкое, что эпопея продолжается-))

Теперь спотыкается на создании com объекта Adodb.Command — «класс не зарегистрирован»

Думал ща по-быстрому перерегистрирую dll-ки из папки C:Program FilesCommon FilesSystemado, но не помогло это.

Картина такая:

        Connection = Новый COMОбъект(«ADODB.Connection»); — норм    

    Connection.Open(СтрокаПодключения); — норм

    Command = Новый COMОбъект(«ADODB.Command»); — ошибка «класс не зарегистрирован»

Понравилась статья? Поделить с друзьями:
  • Ошибка при инициализации плагина криптопро
  • Ошибка при инициализации перезагрузите систему и запустите игру заново
  • Ошибка при инициализации основного словаря проверки орфографии lotus
  • Ошибка при инициализации невозможно создание объекта сервером программирования объектов
  • Ошибка при инициализации модуля сканирования на наличие вирусов