Разное

Ошибка разделенного доступа к базе данных 1с: Ошибка исключительной блокировки информационной базы (+1С линк)

Содержание

Ошибка исключительной блокировки информационной базы (+1С линк)

Ошибка исключительной блокировки информационной базы и ошибка разделения доступа к базе данных выскакивает при обновлении, при выгрузке базы 1с и при проверке и исправлении ошибок(чеке). Что делать в этом случае?
Ошибка исключительной блокировки информационной базыОшибка исключительной блокировки информационной базы

  1. Возможно дело в фоновом процессе. Следует попробовать выгнать всех пользователей из базы с помощью блокировки. Можно сделать батник с командой net session /delete /y
  2. Может помочь перезагрузка сервера с базой. Либо последовательное выполнение команд (опять же батником) net stop "1C:Enterprise 8.2 Server Agent" для остановки сервера и net start "1C:Enterprise 8.2 Server Agent" для запуска.
  3. Также возможно дело в доступе. Выделить папку с базой =>все пользователи => разрешить изменения. ошибка разделения доступаошибка разделения доступа
  4. Вполне вероятно что ваша база опубликована в 1С Линк. В этом случае следует отключить публикацию и попробовать повторить манипуляции, все получится.

Еще один способ устранения подобной ошибки описан в предыдущей статье

[Всего голосов: 0    Средний: 0/5]

Ошибка режима доступа к файлу базы данных 1Cv8.1CD в 1C 8.3

Самая частая причина ошибки режима доступа к файлу базы данных (файл 1Cv8.1CD в версии 1C 8.3) — права доступа «только на чтение». Они устанавливаются автоматически при копировании файлов с DVD, CD-диска или иного внешнего носителя.

В результате 1C видит файл, но не может что-то записать в него или считать оттуда из-за отсутствия прав. Проблема с доступом «только для чтения» актуальна для Windows. В MacOS и Ubuntu другие проблемы — к примеру, ошибка появляется при отсутствии root-прав у пользователя.

Быстрые решения (от наиболее вероятного — к наименее):

  1. Убрать флажок «только для чтения» в Свойствах файла.
  2. Проверить права доступа пользователей: текущего и Сервера 1C (вкладка Безопасность).
  3. Открыть Диспетчер задач и завершить скрытые процессы 1cv8.exe.
  4. Проверить, не блокирует ли антивирус файлы или процессы.
  5. Перезагрузить компьютер и, если есть возможность, рабочий сервер.

Подробные инструкции:

Решение ошибки на Windows

Если режим доступа к файлу БД был нарушен из-за копирования или переноса файлов, проблема решается в несколько кликов. Нужно зайти в свойства базы данных и снять галочку «только для чтения», чтобы 1С смог получить доступ к содержимому.

  1. Нажать правой кнопкой мыши на базе данных 1Cv8.1CD.
  2. В контекстном меню выбрать Свойства.
  3. В открывшемся окне перейти на вкладку Общие.
  4. Убрать галочку Только для чтения, сохранить изменения.

В 90% случаев эти действия помогают, поскольку ошибка из-за прав доступа при копировании — самая частая и самая безобидная. Ошибка режима доступа к файлам базы данных может возникать из-за других проблем с доступом или безопасностью.

  1. Проверить права доступа к базам данных для всех пользователей. Выделить папку или файлы — 1Cv8.1CD, 1Cv8.log и другие связанные с БД, если есть. Нажать по ним правой кнопкой мыши, перейти в Свойства -> Безопасность и выбрать Добавить -> Полные права для всех нужных пользователей. Если при подключении к БД не указывается пользователь, значит работа ведется под аккаунтом Гостя — ему необходимо установить полные права.
  2. Добавить файл 1Cv8.1CD или другую базу данных (разрешение *.1CD) в списки исключений антивирусов. Касперский и ряд других популярных антивирусных программ могут часто перепроверять этот файл, что приводит к сбоям при подключении.
  3. Ошибка может возникать, если база данных располагается на диске C://, если их несколько. Решение — перенести БД на диск D:// (буква диска может быть другой).

Сложный случай — с «плавающей ошибкой», когда она то возникает, то пропадает. Это значит, что к базе данных в это время подключается какая-то другая программа, поэтому запись или чтение ограничено. Исправить проблему не получится, если не найти, каким еще софтом используется программа.

Самый распространенный вариант — антивирусы регулярно сканируют файл на предмет угроз. Вариант хуже — на компьютере есть вирусы или другие нежелательные программы, использующие для каких-то целей базу данных.

Решение для Mac OS и Ubuntu

Ошибка с режимом доступа по сети к базе данных 1Cv8.1cd возникает и на MacOS/Ubuntu. Решение простое — если 1C запускать в режиме root, то проблемы с доступом к файлу БД не возникает.

Чтобы пользователь мог работать без root-прав, нужно:

  1. Сделать открытую папку в разделе /home.
  2. Дать полные права для этой папки для нужного пользователя или группы пользователей.

Для назначения прав можно воспользоваться командой %ГруппаПользователей ALL=NOPASSWD: /bin/mount, /bin/umount. Суть проблемы с правами аналогична Windows, только на Mac OS и Ubuntu сложнее организована система прав доступа к файлам.

Версия 1C 8.3.7.1845 и выше для Mac OS имеет статус бета-версии. В этой версии не поддерживается работа с информационной базой, если она расположена на сетевом ресурсе (подробнее). Иначе говоря, 1C работает только с локальными БД и не будет работать с сетевыми.

Частный программист 1С — ошибка разделенного доступа к базе данных 1С

Я провожу индивидуальное обучение !
Обучение занимает 3-4 часа, и поверьте моему опыту, этого достаточно чтобы научиться работать в 1С. Бонус — в любое удобное время (день), еще 1 час обучения для ответов на накопившиеся у вас вопросы.

Три самых частых вопроса

  • 1. Мне точно не хватит 4 часа!

    Ответ: поверьте, хватит… смотрите видео пример обучения в 1С.
  • 2. Обучение дистанционное? как-то мутно…
    Ответ: если я буду стоять рядом, запоминать Вы лучше не станете.
  • 3. Я точно не запомню, и будет много вопросов которых небыло на обучение
    Ответ: во время обучения я отвечаю на все Ваши вопросы.
    Курсы, это курсы, а ответы на вопросы во время работы — это сопровождение 1С (оно у меня тоже есть).
  • 4. Суть самого процесса, какая?
    Ответ: во время коронавируса COVID-19 школьники обучались дистанционно, вот тут тот же самый подход.

План обучения 1С:Предприятие

  • 1. Как купить товар
  • 2. Как назначить ему цены
  • 3. Как распечатать ценники и прайс-лист
  • 4. Как оформить продажу
  • 5. Как посмотреть отчеты по закупкам\продажам\остаткам
  • 6. Как провести инвентаризацию
  • 7. Ответы на ВСЕ ваши вопросы!

Обучение проводится дистанционно, надо только договорится о времени обучения.

Результат обучения

  • 1. Вы уверенно работаете в 1С
  • 2. Вы знаете что умеет и чего не умеет 1С (это нужно чтобы вам не «вешали лапшу» при доработки 1С )
  • 3. Вы получаете видео запись обучения

100% гарантия возврата средств

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

Ошибки 1С — «MXcom» — системный интегратор

Внутренняя ошибка компоненты dbeng8

    Порой при работе с программой 1С пользователи сталкиваются с такой проблемой, как невозможность провести какую-либо операцию, потому что на определенном моменте появляется сообщение о внутренней ошибке компоненты dbeng8.

    Что означает эта ошибка и почему она возникает? Основной причиной является повреждение структуры таблиц информационной базы, которое может быть вызвано в результате системного сбоя или из-за аварийного завершения работы программы. Например, при внезапном отключении электричества или неправильным выключением компьютера (принудительная перезагрузка при запущенной 1С).
    Как решить данную проблему? Первый способ это выгрузка – загрузка информационной базы через конфигуратор. При этом все пользователи должны выйти из информационной базы.

    Второй вариант решения проблемы – это тестирование и исправление информационной базы. Прежде чем выполнять данную операцию, предварительно обязательно нужно сделать резервную копию базы.

    И третий способ избавления от внутренней ошибки компоненты dbeng8 это использование файла chdbfl.exe. Так же предварительно необходимо сделать резервное копирование информационной базу. Он расположен в папке установленной программы. Обычно это примерно такой путь: C:\Program Files (x86)\1cv82\8.2.18.109\bin\chdbfl.exe

    Нужно запустить файл, указать путь к информационной базе и нажать «Выполнить».

 

Ошибка несовместимости файлы базы данных

    Наверное, некоторые сталкивались с ошибкой при выполнении операции с информационной базой:
    Несовместимая версия файла базы данных: D:\Путь к базе/1Cv8.1CD

    Она возникает при запуске программы 1С после обновления конфигурации. Причиной ошибки является несовместимость версии релиза конфигурации с версией технологической платформы. То есть мы поставили обновление базы, которое не поддерживается, установленной на компьютере, устаревшей версией платформы. Решить такую проблему просто, установив дистрибутив последнего релиза платформы, который можно взять на диске ИТС или скачать с сайта обновлений 1С http://users.v8.1c.ru/ , где для конфигураций всегда указывается минимальная поддерживаемая версия платформы.

 

Ошибка загрузки метаданных

    Такая ошибка обычно возникает при работе в версии программы 1С: Предприятие 7.7. Чаще всего это происходит, когда программу не устанавливают на компьютер, используя дистрибутив, а просто переносят папку с файлами уже инсталлированной программы с одного компьютера на другой. Причиной ошибки загрузки метаданных является невозможность открыть файл 1cv7.md по указанному пути. (подробнее…)

 

Ошибка блокировки данных

    Ошибка блокировки данных происходит в программе 1С: Предприятия 7.7 в сетевой версии или когда данные хранятся на SQL сервере. Возникает она обычно в случае, когда файлы заблокированы кем-то из пользователей, первым вошедшим в монопольный режим. (подробнее…)

 

Ошибка СУБД «Не удалось зафиксировать таблицу для записи ‘SESSION’»

    Иногда бывает, что при попытке открыть какой-то документ перед пользователем появляется такая ошибка «Не удалось зафиксировать таблицу для записи ‘SESSION’». Данная ошибка является ошибкой системы управления базами данных. Первым делом попробуйте перезапустить программу. (подробнее…)

 

Ошибка формата потока

    При возникновении ошибки формата потока первым делом следует сделать резервную копию информационной базы: копию каталога, при файловом варианте – выгрузку базы через конфигуратор, для SQL с помощью соответствующих средств. Это обязательно, так как в процессе исправления ошибки можно привести базу к полному разрушению. (подробнее…)

 

Ошибка разделенного доступа к информационной базе в 1С

    Ошибка 1С разделенного доступа к информационной базе является не очень серьезной и её обычно просто устранить. Чаще всего возникает она в результате автоматического обновления конфигурации или в следствии динамического обновления, в то время когда запущены активные сеансы пользователей. Если это серверный вариант работы базы, то следует завершить все активные процессы и перезагрузить сервер. В случае с файловым вариантом нужно пересоздать каталог информационной базы. Если после этого ошибка не была устранена, то следует выполнить тестирование и исправление информационной базы через конфигуратор, установив флаг «Реиндексация таблиц информационной базы».

 

Конфликт блокировок при выполнении транзакции

    Бывает, что при записи или проведении документов возникает ошибка о конфликте блокировок при выполнении транзакций. В основном это случается при работе в файловой информационной базе. Наиболее частой причиной возникновения такой ситуации служит одновременное обращение нескольких пользователей к одним и тем же таблицам базы данных и низкая производительность программы 1С или СУБД. (подробнее…)

образ диска базы данных искажен

Столкнулся с интересной и достаточно редкой ошибкой при работе с 1С. После отключения света в офисе, при запуске 1С предприятия у пользователя появлялась ошибка


Если у вас есть желание научиться строить и поддерживать высокодоступные и надежные системы, рекомендую познакомиться с онлайн-курсом «DevOps практики и инструменты» в OTUS. Курс не для новичков, для поступления нужно пройти.

sqlite3_exec не удалось: образ диска базы данных искажен

БД: c: \ 1C \ Base \ 1Cv8Log \ 1Cv8.lgd

sql: PRAGMA journal_mode = удалить

Если нажмите «Показать информацию для технической поддержки», то можно увидеть некоторые подробности ошибки:

Невосстановимая ошибка
Ошибка при выполнении запроса POST к ресурсу / e1cib / login:
по причине:
Ошибка при выполнении операции с информационной базой
Файл базы данных поврежден «c: \ 1C \ Base \ 1Cv8.1CD «
по причине:
Файл базы данных поврежден» c: \ 1C \ Base \ 1Cv8.1CD «

Возникла эта ошибка после того, как в офисе выключилось электричество и часть клиентов отрубились. При этом сам сервер не выключался и никак не пострадал от пропажи света. Первым делом я решил проверить целостность файла с базой. Стоит отметить, что в данном случае речь идет про файловый вариант базы 1С.

У 1С Предприятия есть в комплекте утилита для проверки файла базы данных 1Cv8.1CD на наличие ошибок.Называется она chdbfl.exe и живет по адресу

C: \ Program Files (x86) \ 1cv8 \ 8.3.5.1383 \ bin

Работа этой утилиты по восстановлению ошибок в базе данных не вы заявили. Тогда стал смотреть на файл 1Cv8.lgd, он упоминается в тексте ошибки. С версии платформы 8.3.5.1068 в нем хранится журнал регистрации. Мне он был не нужен, я просто его удалил, первый случай сохранив. Ошибка исчезла. При первом запуске базы файл был создан вновь.

Онлайн курс по Linux

Если у вас есть желание освоить операционную систему Linux, не имея подходящего опыта, рекомендую познакомиться с онлайн-курсом Administrator Linux.Базовый в OTUS. Курс для новичков, адаптирован для тех, кто только начинает изучать Linux. Обучение длится 4 месяца.

Что даст вам этот курс:

  • Вы получите навыки администрирования Linux (структура Linux, основные команды, работа с файлами и ПО).
  • Вы рассмотрите следующий стек технологий: Zabbix, Prometheus, TCP / IP, nginx, Apache, MySQL, Bash, Docker, Git, nosql, grfana, ELK.
  • Умение настраивать веб-сервера, базы данных (mysql и nosql) и работа с сетью.
  • Мониторинг и логирование на базе Zabbix, Prometheus, Grafana и ELK.
  • Научитесь работать с помощью Git и Docker.

Смотрите подробнее программу по.

Помогла статья? Подписывайся на телеграмму канал автора

Анонсы всех статей, плюс много другой полезной и интересной информации, которая не попадает на сайт.

.

Не удается открыть базу данных Access на сервере

  • Чтение занимает 2 мин
  • Применяется к:

    .

    Access 2010, Microsoft Office Access 2007, Microsoft Office Access 2003

В этой статье

Примечание

Office 365 ProPlus переименован в Майкрософт 365 корпоративные приложения .Для получения дополнительной информации об этом изменении прочитайте этот блог.

Исходный номер статьи базы знаний: 289681

Примечание

Эта статья относится только к базам данных Microsoft Access (ACCDB и MDB). Требуется знание пользовательского интерфейса на однопользовательских компьютерах.

Симптомы

При попытке открыть базу данных, расположенную на сервере, может появиться следующее сообщение об ошибке:

Не удалось использовать <имя файла>; файл уже используется.

Причина

. Если у вас нет разрешений на создание папок, в которой находится ядро ​​базы данных, Microsoft Jet не может создать файл данных блокировки. Файл необходим для открытия базы данных используемых пользователями. Таким образом, если соответствующий файл еще не существует, пользователь, не имеющий разрешений на создание, открывает базу данных в монопольном режиме.

Примечание

Информация о блокировке:

  • *.ldb в Access 2003 и более ранняя версиях Access
  • *. лаккдб в Access 2007/2010

Обходной путь

Чтобы предотвратить такое поведение, убедитесь, что все пользователи, которые открывают базу данных, имеют разрешение на чтение, запись и создание для папок, в которой находится база данных.

Кроме того, если вы используете базу данных с расширенными возможностями безопасности, убедитесь, что пользователи, которые открыли базу данных, также разрешение на чтение и чтение для папок.Папка содержит файл рабочей группы (MDW-файл).

Дополнительная информация

Чтобы открыть базу данных в режиме общего доступа, ядро ​​базы данных Microsoft Jet должна иметь возможность создать файл блокировки (*. Ldb или *. Лаккдб) в той же папке, что и сама база данных.

Для получения сведений о файлах LDB выберите пункт Справка по Microsoft Access в меню Справка , введите доступ к базе данных Access в помощнике Office или в мастере ответа, а затем нажмите кнопку , чтобы просмотреть контент.

Ссылки

Дополнительные сведения о файлах LDB приведена в следующей статье:

Введение в блокировку файлов (. Лаккдб и. Ldb) в Access

.

Не удается открыть базу данных Доступ

  • Чтение занимает 9 мин
  • Применяется к:

    .

    Access 2019, Access 2016, Access 2013, Access 2010, Microsoft Office Access 2007, Microsoft Office Access 2003

В этой статье

В этой статье Исправлена ​​ошибка, обнаруживающая при использовании библиотеки DAO для преобразования базы данных.

Примечание

Office 365 ProPlus переименован в Майкрософт 365 корпоративные приложения . Для получения дополнительной информации об этом изменении прочитайте этот блог.

Исходный номер статьи базы знаний: 888634

Примечание

Эта статья относится к файлу базы данных Microsoft Access (. Mdb) или к файлу базы данных Microsoft Access (ACCDB). Требуются основные навыки работы с макросами, написанием кода и связием.

Симптомы

При попытке открыть базу данных в Microsoft Access 2000 или более поздней версии отображается следующее сообщение об ошибке:

База данных находится в непредвиденном состоянии

Причина

Эта проблема может возникнуть при использовании библиотеки объектов доступа к данным (DAO) для преобразования базы данных, созданной в Microsoft Access 97 или более ранней версии, с помощью CompactDatabase метода. CompactDatabase Метод может оставить новую базу данных в частично преобразованном состоянии.

Решение

Чтобы устранить эту проблему, воспользуйтесь одним из указанных ниже способов.

Способ 1: используйте команду Convert Database при наличии исходной базы данных.

Если копия исходной базы данных по-прежнему существует в исходном формате, используйте Convert Database команду. Для этого выполните следующие действия:

Доступ 2000, Доступ 2002 или Доступ 2003
  1. Создайте схему исходной базы данных.

  2. Запустите Access 2000 или более поздней версии.

  3. В меню Сервис выберите пункт Служебные программы , выберите команду преобразовать базу данных , а затем — доступ к формату файлов 2000 .

    Примечание

    Если вы используете Access 2000, в меню преобразовать базу данных отображается только Текущая версия базы данных Access .

  4. В диалоговом окне база данных для преобразования выберите имя файла базы данных, который требуется преобразовать, а затем нажмите кнопку преобразовать .

  5. В диалоговом окне Преобразование базы данных в введите новое имя файла базы данных, а затем нажмите кнопку сохранить .

Доступ 2007
  1. Создайте копию копии исходной базы данных.
  2. Попробуйте открыть эту базу данных.
  3. При открытии базы данных Access 97 или Access 95 File Format. mdb в Access отображается диалоговое окно « улучшение базы данных «. Вам будет предложено обновить базу данных.
  4. Нажмите кнопку Да , чтобы обновить базу данных до формата файла, который выбран в формате файла по умолчанию в Access 2007. После преобразования базы данных можно внести изменения в измененный файл в Access 2007. Тем не менее, вы больше не можете открыть файл базу данных, используя версию Access, предыдущую версию, на которую вы преобразовали базу данных.

Способ 2: восстановление данных базы данных и запросов к базе данных при отсутствии исходной незащищенной базы данных

Если у вас нет копии исходной незащищенной базы данных в исходном формате и вы предпринимали стандартные способы устранения неполадок, попробуйте восстановить данные базы данных и запросов базы данных.Для этого выполните следующие действия:

  1. Создайте схему исходной базы данных.

  2. Запустите Access 2000 или более поздней версии.

  3. Доступ 2000, доступ 2002 или доступ 2003

    • Щелкните пустая база данных Access , введите имя новой базы данных в поле имя файла , а затем нажмите кнопку создать .

    Доступ 2007

    • Нажмите кнопку Office, выберите создать , щелкните пустую базу данных , а затем нажмите создать , чтобы создать новую пустую базу данных.
  4. Доступ 2000, доступ 2002 или доступ 2003

    • В меню Вставка выберите пункт Модуль . Запускается редактор Microsoft Visual Basic и создается новый модуль.

    Доступ 2007

    • На вкладке создайте щелкните стрелку вниз с помощью элемента макрос , а затем выберите модуль . Запускается редактор Microsoft Visual Basic и создается новый модуль.
  5. В меню Сервис выберите пункт Ссылки .

  6. В списке Доступные ссылки найдите БИБЛИОТЕКУ объектов Microsoft DAO 3,6 , а затем установите флажок в поле Библиотека объектов Microsoft DAO 3,6 .

    Примечание

    DAO 3,6 также доступен в Windows XP Home Edition.

  7. Чтобы закрыть диалоговое окно « ссылки «, нажмите кнопку ОК .

  8. Вставьте следующий код в созданный новый модуль.

      Sub RecoverCorruptDB ()
     Dim dbCorrupt как DAO.Database
     Dim dbCurrent как DAO.Database
     Dim td как DAO.TableDef
     Dim td Новый как DAO.TableDef
     Dim fld As DAO.Field
     Dim fldНовое как DAO.Field
     Dim ind As DAO.Index
     Dim indNew As DAO.Index
     Dim qd как DAO.QueryDef
     Dim qd Новое как DAO.QueryDef
     Dim strDBPath как строка
     Dim strQry как строка
    
     'Замените следующий путь на путь
     'поврежденная база данных.
     strDBPath = "C: \ Мои документы \ yourDatabase.mdb"
    
     При ошибке Возобновить Далее
     Установите dbCurrent = CurrentDb
     Установите dbCorrupt = OpenDatabase (strDBPath)
    
     Для каждого тд в dbCorrupt.TableDefs
         Если Left (td.Name, 4) <> "MSys" Then
             strQry = "ВЫБРАТЬ * В [" & td.Name & "] ИЗ [" & td.Name & "] IN '" & dbCorrupt.Name & "'"
             dbCurrent.Execute strQry, dbFailOnError
             dbCurrent.TableDefs.Refresh
             Установите tdNew = dbCurrent.TableDefs (td.Name)
    
     'Восстановите индексы в таблице.
             Для каждого инд. В тд. Индексы
                 Установите indNew = tdNew.CreateIndex (ind.Name)
                 Для каждого поля в инд. Полях
                     Установите fldNew = indNew.CreateField (имя поля)
                     indNew.Fields.Append fldNew
                 следующий
                 indNew.Primary = ind.Primary
                 indNew.Unique = ind.Unique
                 indNew.IgnoreNulls = ind.IgnoreNulls
                 tdNew.Indexes.Append indNew
                 tdNew.Indexes.Refresh
             следующий
         Конец, если
     следующий
    
     'Повторно создайте запросы.
     Для каждого qd в dbCorrupt.QueryDefs
         Если Left (qd.Name, 4) <> "~ sq_" Тогда
             Установите qdNew = dbCurrent.CreateQueryDef (qd.Name, qd.SQL)
         Конец, если
     следующий
    
     dbCorrupt.Закрыть
     Application.RefreshDatabaseWindow
     MsgBox «Процедура завершена».
    Конец подписки
      

    Примечание

    Код пытается импортировать все таблицы и все запросы из поврежденной базы данных в текущей базе данных. Замените на C: \ My Documents \ yourDatabase.mdb правильный путь и имя файла базы данных.

  9. Чтобы запустить код, выполнить команду выполнить суб / пользовательскую форму в меню выполнение .

Способ 3: восстановление данных базы данных при отсутствии исходной защищенной базы данных

Если у вас нет копии исходной защищенной базы данных в исходном формате и вы предпринимали стандартные способы устранения неполадок, попробуйте восстановить данные базы данных.Для этого выполните следующие действия:

  1. Создайте схему исходной базы данных.

  2. Запустите Access 2000 или более поздней версии.

  3. Доступ 2000, доступ 2002 или доступ 2003

    • Щелкните пустая база данных Access , введите имя новой базы данных в поле имя файла , а затем нажмите кнопку создать .

    Доступ 2007

    • Нажмите кнопку Microsoft Office , выберите пункт создать , щелкните пустую базу данных , а затем нажмите кнопку создать , чтобы создать новую пустую базу данных.
  4. Доступ 2000, доступ 2002 или доступ 2003

    • В меню Вставка выберите пункт Модуль . Запускается редактор Microsoft Visual Basic и создается новый модуль.

    Доступ 2007

    • На вкладке создайте щелкните стрелку вниз с помощью элемента макрос , а затем выберите модуль . Запускается редактор Microsoft Visual Basic и создается новый модуль.
  5. В меню Сервис выберите пункт Ссылки .

  6. В списке Доступные ссылки найдите БИБЛИОТЕКУ объектов Microsoft DAO 3,6 , а затем установите флажок в поле Библиотека объектов Microsoft DAO 3,6 .

  7. Чтобы закрыть диалоговое окно « ссылки «, нажмите кнопку ОК .

  8. Вставьте следующий код в созданный новый модуль.

      Вариант Сравнить базу данных
    
    Функция BackupSecureDatabase ()
    
     При ошибке GoTo Err_BackupSecureDatabase
     Dim wrk По умолчанию как DAO.Рабочее пространство
     Dim dbsNew As DAO.Database
     Dim dbeSecure как DAO.PrivDBEngine
     Dim wrkSecure As DAO.Workspace
     Dim dbsSecure As DAO.Database
     Dim tdfSecure As DAO.TableDef
     Dim strSecureUser как строка
     Dim strSecurePwd как строка
     Dim strSecurePathToDatabase как строка
     Dim strSecurePathToWorkgroupFile как строка
     Dim strTableName как строка
     Dim strSQL как строка
     Dim dbsTemp как DAO.Database
     Dim strTempPathToDatabase как строка
     Dim strBackupPathToDatabase как строка
     Dim strLogPath как строка
     Dim SourceRec как DAO.Набор записей
     Dim DestRec как DAO.Recordset
    
     'Установите переменные (изменение для среды).
     strSecurePathToDatabase = "C: \ MyDatabases \ Northwind.mdb"
     strSecurePathToWorkgroupFile = "C: \ MyDatabases \ Secured.mdw"
     strSecureUser = "Администратор"
     strSecurePwd = "пароль"
     strTempPathToDatabase = "C: \ MyDatabases \ Temp.mdb"
     strBackupPathToDatabase = "C: \ MyDatabases \ Backup.mdb"
     strLogPath = "C: \ MyDatabases \ Backup.log"
    
     'Откройте файл журнала.
     Откройте strLogPath для вывода как # 1
     Печать №1, Время, «Файл журнала открыт»
     Печать №1, Время, «Набор переменных»
    
     'Удалите старые файлы.Если Dir (strTempPathToDatabase) <> "", то убить strTempPathToDatabase
     Если Dir (strBackupPathToDatabase) <> "", то убить strBackupPathToDatabase
     Печать №1, Время, «Старые резервные копии удалены»
    
     'Создайте новую временную базу данных.
     Установите wrkDefault = DBEngine.Workspaces (0)
     Установите dbsNew = wrkDefault.CreateDatabase (strTempPathToDatabase, dbLangGeneral)
     Установите dbsNew = Nothing
     Печать №1, Время, «Создана временная база данных»
    
     'Откройте защищенную базу данных.
     Установите dbeSecure = New PrivDBEngine
     dbeSecure.SystemDB = strSecurePathToWorkgroupFile
     dbeSecure.DefaultUser = strSecureUser
     dbeSecure.DefaultPassword = strSecurePwd
    
     Установите wrkSecure = dbeSecure.Workspaces (0)
     Установите dbsSecure = wrkSecure.OpenDatabase (strSecurePathToDatabase)
     Печать №1, Время, «Защищенная база данных открыта из» & strSecurePathToDatabase
    
     'Откройте временную базу данных.
     DBEngine (0) .CreateUser
     Установите dbsTemp = DBEngine (0) .OpenDatabase (strTempPathToDatabase)
    
     Печать №1, Время, «База данных Temp открыта из» & strTempPathToDatabase
    
     'Просмотрите таблицы в защищенной базе данных.
     Для каждого tdfSecure в dbsSecure.TableDefs
        strTableName = tdfSecure.Name
        Если Left (strTableName, 4) <> "MSys" Тогда
            Печать №1, Время, «Экспорт» & strTableName
            'Скопируйте определение таблицы во временную базу данных.
            Если CopyTableDef (tdfSecure, dbsTemp, strTableName), то
                'Затем добавьте все данные в таблицу.
                 Установите SourceRec = tdfSecure.OpenRecordset (dbOpenTable, dbReadOnly)
                 Установите DestRec = dbsTemp.OpenRecordset (strTableName)
                 AppendRecordsFromOneRecordSetToAnother SourceRec, DestRec
                 SourceRec.Закрыть
                 DestRec.Close
    
            Конец, если
        Конец, если
     Следующий tdfSecure
    
     'Закройте открытые объекты.
     dbsSecure.Close
     Печать №1, Время, «Защищенная база данных закрыта»
     dbsTemp.Close
     Печать №1, Время, «Временная база данных закрыта»
    
     'Сжать базу данных в резервную базу данных.
     DBEngine.CompactDatabase strTempPathToDatabase, strBackupPathToDatabase, dbLangGeneral
     Печать №1, Время, «Новая резервная база данных создана в» & strBackupPathToDatabase
    
     'Удалить временную базу данных.
     Если Dir (strTempPathToDatabase) <> "", то убить strTempPathToDatabase
     Печать №1, Время, «Временная база данных удалена»
     Печать №1, Время, «Файл журнала закрыт»
     Закрыть # 1
    
    Exit_BackupSecureDatabase:
    
     Установить wrkDefault = Nothing
     Установите dbsNew = Nothing
     Установите dbeSecure = Nothing
     Установите wrkSecure = Nothing
     Установите dbsSecure = Nothing
     Установите tdfSecure = Nothing
     Установите dbsTemp = Nothing
     Функция выхода
    
    Err_BackupSecureDatabase:
       Распечатайте № 1, Время, «*** ОШИБКА:» & Err.Число, Err.Description, strTableName
       Продолжить Далее
    
    Конечная функция
    
    Функция CopyTableDef (SourceTableDef как TableDef, TargetDB как база данных, TargetName как строка) как целое число
    Dim SI как DAO.Index, SF как DAO.Field, SP как DAO.Property
    Dim T как DAO.TableDef, I как DAO.Index, F как DAO.Field, P как DAO.Property
    Dim I1 как целое, f1 как целое, P1 как целое
    
     Если SourceTableDef.Attributes And dbAttachedODBC или SourceTableDef.Attributes And dbAttachedTable, то
      CopyTableDef = False
      Функция выхода
     Конец, если
     Установите T = TargetDB.CreateTableDef (TargetName)
    
     'Скопируйте свойства Jet.
      При ошибке Возобновить Далее
      Для P1 = 0 To T.Properties.Count - 1
       Если T.Properties (P1) .Name <> "Name" Тогда
         T.Properties (P1) .Value = SourceTableDef.Properties (P1) .Value
       Конец, если
      Следующий P1
     При ошибке GoTo 0
    
     'Копировать поля.
       Для f1 = 0 в SourceTableDef.Fields.Count - 1
        Установите SF = SourceTableDef.Fields (f1)
    
        'DAO 3.0 и более поздние версии. ****
        Если (SF.Attributes And dbSystemField) = 0, то
         Установите F = T.CreateField ()
         'Скопируйте свойства Jet.При ошибке Возобновить Далее
           Для P1 = 0 To F.Properties.Count - 1
             F.Properties (P1) .Value = SF.Properties (P1) .Value
           Следующий P1
           При ошибке GoTo 0
         T.Fields.Приложение F
        End If 'Соответствующее End If ****
     Далее f1
    
    'Копировать индексы.
     Для I1 = 0 в SourceTableDef.Indexes.Count - 1
       Установите SI = SourceTableDef.Indexes (I1)
    
    'Внешние индексы добавляются отношениями.
       Если не СИ. Иностранный, то
         Установите I = T.CreateIndex ()
         'Скопируйте свойства Jet.
           При ошибке Возобновить Далее
           Для P1 = 0 К I.Properties.Count - 1
             I.Properties (P1) .Value = SI.Properties (P1) .Value
           Следующий P1
           При ошибке GoTo 0
         'Копировать поля.
           Для f1 = 0 To SI.Fields.Count - 1
             Установите F = T.CreateField (SI.Fields (f1) .Name, T.Fields (SI.Fields (f1) .Name) .Type)
             I.Fields.Приложение F
           Далее f1
         T.Индексы.Приложение I
       Конец, если
     Следующий I1
    
    'Добавить TableDef.
     TargetDB.TableDefs.Append T
    
    'Копировать свойства таблицы доступа / пользователя.
     Для P1 = T.Properties.Count To SourceTableDef.Properties.Count - 1
       Установите SP = SourceTableDef.Свойства (P1)
       Установите P = T.CreateProperty (SP.Name, SP.Type)
       P.Value = SP.Value
       T.Properties.Append P
     Следующий P1
    
    'Копировать свойства поля доступа / пользователя.
     Для f1 = 0 To T.Fields.Count - 1
       Установите SF = SourceTableDef.Fields (f1)
       Установите F = T.Fields (f1)
       Для P1 = F.Properties.Count To SF.Properties.Count - 1
         Установите SP = SF.Properties (P1)
         Установите P = F.CreateProperty (SP.Name, SP.Type)
         P.Value = SP.Value
         F. Недвижимость.Приложение P
       Следующий P1
     Далее f1
    
    'Копировать свойства доступа / индекса пользователя.
     При I1 = 0 К T.Indexes.Count - 1
       Установите SI = SourceTableDef.Indexes (T.Indexes (I1) .Name)
    
    «Не копируйте чужие индексы. Они созданы отношениями.
       Если не СИ. Иностранный, то
         Установите I = T.Indexes (I1)
         Для P1 = I.Properties.Count To SI.Properties.Count - 1
           Установите SP = SI.Properties (P1)
           Установите P = I.CreateProperty (SP.Name, SP.Type)
           P.Value = SP.Value
           I.Properties.Приложение P
         Следующий P1
       Конец, если
      Следующий I1
     CopyTableDef = True
    Конечная функция
    
    Функция AppendRecordsFromOneRecordSetToAnother (SR As DAO.Набор записей, DR как DAO.Recordset)
    Dim x As Integer
    
    Делай, пока не делай этого
    DR.AddNew
     Для x = 0 To SR.Fields.Count - 1
         DR (x) .Value = SR (x) .Value
     Далее x
    DR.Обновление
    SR.MoveNext
    Петля
    Конечная функция
      

    Примечание

    Код пытается импортировать все таблицы из поврежденной базы данных. Замените переменные в таблице после этапа в расположении файлов базы данных и параметров пользователя.

  9. В списке функций выберите баккупсекуредатабасе .

  10. Чтобы запустить код, выполнить команду выполнить суб / пользовательскую форму в меню выполнение .

    Переменная Описание
    strSecurePathToDatabase Расположение защищенного файла базы данных
    strSecurePathToWorkgroupFile Расположение группы рабочей группы
    strSecureUser Безопасное имя для входа пользователя
    strSecurePwd Пароль для безопасного входа пользователя
    strTempPathToDatabase Расположение временной базы данных
    strBackupPathToDatabase Расположение архива базы данных
    strLogPath Расположение файла

Состояние

Корпорация Майкрософт подтвердила, эта проблема связана с продуктами Майкрософт, эта информация в разделе «информация в статье относится к следующим продуктам».

Дополнительная информация

Для получения сведений об устранении неполадок, связанных с повреждением базы данных Microsoft Access, ознакомьтесь со следующей статьей:

Сжатие и восстановление базы данных

.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *