- В этой статье
- Симптомы
- Причина
- Решение
- Метод 1. Используйте команду «Преобразовать базу данных» при наличии исходной базы данных.
- Access 2000, Access 2002 и Access 2003
- Access 2007
- Метод 2. Восстановление базы данных и запросов базы данных при отсутствии исходной незащищенной базы данных
- Способ 1: использовать опцию авторемонта
- Способ 2: редактировать столбцы с именами больше 32 символов
- Способ 3: преобразовать базу данных в формат файла .accdb
- Способ 4: удалить последние обновления
- Метод 3. Восстановление данных базы данных при отсутствии исходной защищенной базы данных.
- Состояние
- Дополнительная информация
В этой статье
В этой статье описывается, как устранить проблему, возникающую при использовании библиотеки DAO для преобразования базы данных.
Исходный номер базы знаний: 888634
Примечание.
Эта статья относится к файлам базы данных Microsoft Access (.mdb) или (.accdb). Требуются базовые навыки кодирования, макросов и взаимодействия.
Симптомы
При попытке открыть базу данных с помощью Microsoft Access 2000 или более поздней версии появляется следующее сообщение об ошибке:
База данных находится в неожиданном состоянии
Причина
Эта проблема может возникнуть при использовании библиотеки объектов доступа к данным (DAO) для преобразования базы данных, созданной в Microsoft Access 97 или более ранней версии, с помощью метода CompactDatabase. При использовании метода CompactDatabase новая база данных может находиться в частично преобразованном состоянии.
Решение
Для решения этой проблемы воспользуйтесь одним из следующих способов.
Метод 1. Используйте команду «Преобразовать базу данных» при наличии исходной базы данных.
Если у вас есть копия исходной базы данных в исходном формате, используйте команду Преобразовать базу данных. Для этого выполните следующие действия:
Access 2000, Access 2002 и Access 2003
- Сделайте резервную копию исходной базы данных.
- Запустите Access 2000 или более позднюю версию.
- В меню «Инструменты» выберите «Инструменты», выберите «Преобразовать базу данных» и нажмите «Для доступа к формату 2000.
Примечание.
Если вы используете Access 2000, в меню Преобразование базы данных отображается только параметр В текущую версию базы данных Access.
- В диалоговом окне База данных для преобразования щелкните имя файла базы данных, который требуется преобразовать, и щелкните Преобразовать.
- В диалоговом окне «Преобразование базы данных» введите имя для нового файла базы данных и нажмите «Сохранить.
Access 2007
- Сделайте резервную копию исходной базы данных.
- Попробуйте открыть эту базу данных.
- Когда вы открываете файл .mdb базы данных Access 97 или Access 95, программа отображает диалоговое окно Enhance Database. Предлагается обновление базы данных.
- Нажмите «Да», чтобы обновить базу данных до формата файла по умолчанию в Access 2007. После преобразования базы данных в Access 2007 вы можете внести изменения в файл. Однако вы не можете открыть базу данных с более ранней версией Access, чем та, в которую была преобразована база данных.
Метод 2. Восстановление базы данных и запросов базы данных при отсутствии исходной незащищенной базы данных
Если у вас нет копии исходной незащищенной базы данных в исходном формате, и вы не можете отладить повреждение с помощью стандартных методов, попробуйте восстановить данные и запросы базы данных. Для этого выполните следующие действия:
- Сделайте резервную копию исходной базы данных
- Запустите Access 2000 или более позднюю версию.
- Доступ 2000, Доступ 2002 и Доступ 2003
- Щелкните Пустая база данных доступа, введите имя новой базы данных в поле Имя файла и щелкните Создать.
Доступ2007
- Нажмите кнопку Office, выберите «Создать», нажмите «Пустая база данных» и выберите «Создать», чтобы создать новую пустую базу данных.
- Доступ 2000, Доступ 2002 и Доступ 2003
- В меню «Вставка» выберите «Модуль». Откроется редактор Microsoft Visual Basic, и будет создан новый модуль.
Доступ2007
- На вкладке «Создать» щелкните стрелку под «Макрос» и выберите «Модуль». Откроется редактор Microsoft Visual Basic, и будет создан новый модуль.
- Выберите «Ссылки» в меню «Инструменты.
- Найдите Microsoft DAO 3.6 Object Library в списке «Доступные ссылки» и установите флажок Microsoft DAO 3.6 Object Library.Примечание.DAO 3.6 также поддерживается в системах под управлением Windows XP Home Edition.
- Нажмите OK, чтобы закрыть диалоговое окно «Ссылки.
Вставьте следующий код в созданный модуль.
Sub RecoverCorruptDB() Dim dbCorrupt As DAO.Database Dim dbCurrent As DAO.Database Dim td As DAO.TableDef Dim tdNew As DAO.TableDef Dim fld As DAO.Field Dim fldNew As DAO.Field Dim ind As DAO.Index Dim indNew As DAO .Index Dim qd As DAO.QueryDef Dim qdNew As DAO.QueryDef Dim strDBPath As String Dim strQry As String ‘ Замените следующий путь на путь ‘ поврежденной базы данных strDBPath = «C:My DocumentsyourDatabase.mdb» При ошибке Продолжить Далее Установить dbCurrent = CurrentDb Установить dbCorrupt = OpenDatabase(strDBPath) Для каждого td В dbCorrupt.TableDefs Если Left(td.Name, 4) Then <> «MSys» strQry = «SELECT * INTO » & td.Name & » FROM » & td.Name & » IN ‘» & dbCorrupt.Name & «‘» dbCurrent.Execute strQry, dbFailOnError dbCurrent.TableDefs.Refresh Set tdNew = dbCurrent.TableDefs(td.Name) ‘ Восстановить индексы в таблице . Для каждого ind In td.Indexes Set indNew = tdNew.CreateIndex(ind.Name) Для каждого fld Ind.Fields Set fldNew = indNew.CreateField(fld.Name) indNew.Fields.Append fldNew Next indNew.Primary = ind.Primary indNew.Unique = ind.Unique indNew.IgnoreNulls = ind.IgnoreNulls tdNew.Index.Append indNew tdNew.Index.Refresh Next End If Next ‘ Обновить запросы. Для каждого qd в dbCorrupt.QueryDefs If Left(qd.Name, 4) <> «~sq_» Then Set qdNew = dbCurrent.CreateQueryDef(qd.Name, qd.SQL) End If Next dbCorrupt.Close Application.RefreshDatabaseBox «McededDatabaseBoxWindow» полностью.» end sub
Примечание.
Код попытается импортировать все таблицы и запросы из поврежденной базы данных в новую. Замените C:My DocumentsyourDatabase.mdb правильным путем и именем файла базы данных.
Чтобы запустить код, нажмите «Выполнить подпрограмму/форму пользователя» в меню «Выполнить.
Способ 1: использовать опцию авторемонта
- Запустите Access> перейдите в Инструменты базы данных.
- Выберите параметр «Сжать и восстановить базу данных .
- Откроется новое окно. Выберите файл базы данных, который вы хотите восстановить (файл, вызывающий этот код ошибки).
- Нажмите кнопку «Компактный», чтобы начать процесс восстановления.
Кроме того, вы также можете ознакомиться с нашим руководством по устранению неполадок, связанных с повреждением файлов Microsoft Access. Мы надеемся, что некоторые из исправлений, перечисленных в этом руководстве, будут вам полезны.
Способ 2: редактировать столбцы с именами больше 32 символов
Еще один быстрый способ исправить эту ошибку — открыть проблемные файлы в Microsoft Access, а затем отредактировать все столбцы с именами длиннее 32 символов.
Иногда, если вы используете слишком много символов, Access не может правильно загрузить правильные файлы. Конечно, этот способ подходит для небольших файлов. Внесение этих изменений вручную для больших файлов занимает слишком много времени.
Способ 3: преобразовать базу данных в формат файла .accdb
Третье решение — преобразовать базу данных в формат accdb. Однако для этого решения требуется Microsoft Access 2010. Просто откройте проблемные файлы, и MS Access 2010 автоматически преобразует затронутые файлы в расширение .accdb.
Способ 4: удалить последние обновления
Если эта проблема появилась вскоре после установки последних обновлений Windows, удалите соответствующие обновления и проверьте, сохраняется ли проблема. Иногда новые обновления Windows 10 могут вызывать различные технические проблемы. Например, известно, что Windows 7 KB4480970 вызывает эту ошибку.
Самое простое решение исправить эту ошибку — удалить проблемные обновления.
Если вы сталкивались с другими решениями для исправления неизвестных ошибок базы данных, сообщите нам об этом в комментариях ниже.
Читайте также: FAQ: Windows 10 LTSC Enterprise 2019 — особенности редакции
Метод 3. Восстановление данных базы данных при отсутствии исходной защищенной базы данных.
Если у вас нет копии исходной защищенной базы данных в исходном формате, и если вы не можете устранить повреждение стандартными методами, вы можете попытаться восстановить данные базы данных. Для этого выполните следующие действия:
- Сделайте резервную копию исходной базы данных
- Запустите Access 2000 или более позднюю версию.
- Доступ 2000, Доступ 2002 и Доступ 2003
- Щелкните Пустая база данных доступа, введите имя новой базы данных в поле Имя файла и щелкните Создать.
Доступ2007
- Нажмите кнопку Microsoft Office, выберите «Создать», нажмите «Пустая база данных», а затем нажмите «Создать», чтобы создать новую пустую базу данных.Доступ 2000, Доступ 2002 и Доступ 2003
- В меню «Вставка» выберите «Модуль». Откроется редактор Microsoft Visual Basic, и будет создан новый модуль.
Доступ2007
- На вкладке «Создать» щелкните стрелку под «Макрос» и выберите «Модуль». Откроется редактор Microsoft Visual Basic, и будет создан новый модуль.
- Выберите «Ссылки» в меню «Инструменты.
- Найдите Microsoft DAO 3.6 Object Library в списке «Доступные ссылки» и установите флажок Microsoft DAO 3.6 Object Library.
- Нажмите OK, чтобы закрыть диалоговое окно «Ссылки.
Вставьте следующий код в созданный модуль.
Примечание.
Код попытается импортировать все таблицы из поврежденной базы данных в резервную базу данных. После 10-го шага в таблице нужно заменить значения переменных, и указать расположение файлов БД и пользовательских настроек.
- Выберите BackupSecureDatabase из списка функций.
- Чтобы запустить код, нажмите «Выполнить подпрограмму/форму пользователя» в меню «Выполнить.
стрсекурепастодатабасе Расположение защищенного файла базы данных стрсекурепастоворкгруппфиле Расположение файла рабочей группы стрсекуреусер Имя пользователя для безопасного входа стрсекурепвд Защищенный пароль пользователя стртемппастодатабасе Расположение временного файла базы данных стрбаккуппастодатабасе Расположение файла резервной копии базы данных стрлогпас Расположение файла журнала
Состояние
Это поведение является подтвержденной ошибкой в продуктах Microsoft, перечисленных в разделе «Относится к».
Дополнительная информация
Дополнительные сведения об устранении неполадок, связанных с повреждением базы данных Microsoft Access, см в следующей статье:
Сжать и восстановить базу данных