MS Access 2003: Могут ли данные исчезнуть из записей, и как мне проверить и предотвратить это? - PullRequest
3 голосов
/ 29 апреля 2010

Проблема и о базе данных: данные из записи в базе данных Access 2003 исчезли. Эта база данных имеет 1 бэкэнд и 3 веб-интерфейса, несколько пользователей и размещена на Citrix. В этой базе данных у нас есть записи всех обслуживаемых клиентов, начиная с тысячелетий.

Справочная информация: Форма для ввода данных клиента настроена с различными подчиненными формами, включая как подчиненную форму "зарегистрированные программы", так и подчиненную форму "услуги". Клиент может быть зачислен в несколько программ. После регистрации в программе службы могут быть введены для этой программной области с использованием подчиненной формы служб. В подчиненной форме служб есть несколько полей, одно из которых представляет собой раскрывающееся поле, позволяющее выбрать одну из программ, в которую был зачислен клиент (список обновляется для этого клиента при каждой регистрации в новой программе).

Сведения о проблеме: для одной конкретной записи и одной конкретной программной области программа исчезла из подчиненной формы "программы зарегистрированы", а все связанные службы исчезли из подчиненной формы "службы" на период 3 месяцев данных запись. Однако другие программы и сервисы для этой записи не исчезли.

Вопросы: Является ли исчезновение данных распространенной проблемой Access 2003? Существуют ли тесты, которые можно запустить, чтобы увидеть, исчезают ли данные, и поймать эти данные? Если так, то кто они? Если задействован конкретный код, что это? Что можно сделать, чтобы предотвратить исчезновение данных (кроме использования другой базы данных)?

Ответы [ 3 ]

4 голосов
/ 30 апреля 2010

Как говорит @HansUp, это не распространенная проблема. На ум приходят две вещи:

  1. Файлы Jet / ACE не любят храниться на файловых серверах с реплицированными файловыми системами , если файл не редактируется только на одной стороне синхронизации репликации. То есть, если у двух серверов есть реплицированный том, и у вас есть люди, подключающиеся к обоим серверам и пытающиеся отредактировать обе копии базы данных, вы объедините данные. Если вы редактируете только одну сторону, проблем не должно быть, но я беспокоюсь о таких вещах. Другая проблема может быть виртуализация, хотя у меня нет определенного сценария, где это может быть проблемой.

  2. Более 10 лет назад я столкнулся с проблемой, которая сочетала старую ошибку закладки с On Error Resume Next, из-за которой данные не сохранялись. То, что происходило, было то, что отключение отчетов об ошибках / обработки с помощью On Error Resume Next не выходило должным образом из области, и об ошибках, которые происходили при выходе из записи через навигацию по закладкам, никогда не сообщалось. В результате изменения были потеряны. Когда я изменил навигацию по закладкам, чтобы сохранить запись, если она была грязной, перед изменением указателя закладки, проблема исчезла. Но пока я занимался этим, я исключил как можно больше операторов On Error Resume Next.

Еще одним видом второй проблемы может быть, если для DoCmd.SetWarnings установлено значение False. Я никогда не беспокоился о SetWarnings, так что это не проблема, но это обычная техника для новичков, на которую стоит обратить внимание. Идея состоит в том, что ошибки случаются, но отчеты о них не доходят до пользователей, и, следовательно, изменения теряются.

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

3 голосов
/ 29 апреля 2010

Является ли исчезновение данных распространенной проблемой Access 2003?

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

Если у вас есть форма / подчиненная форма, основанная на родительских и дочерних таблицах, убедитесь, что у вас установлены отношения и что вы обеспечиваете ссылочную целостность этих отношений. Это стандартная практика, гарантирующая, что вы не можете удалить родительскую запись, пока у вас есть хотя бы одна связанная запись в дочерней таблице.

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

0 голосов
/ 20 мая 2010

В этот момент мы определили, что отсутствующие данные встречаются случайным образом и не прослеживаются по конкретному шаблону, что затрудняет точное определение решения. Мы все еще не уверены, действительно ли данные исчезли или пользователь предположил, что он ввел данные, но не сделал этого. К сожалению, наш db-хост не хранит серию резервных копий, к которым мы могли бы отследить, а скорее обновляет резервную копию в конце каждого дня, что снова поднимает проблему для отслеживания исчезновения. Мы будем продолжать изучать различные ответы, представленные здесь, и будем благодарны за ваш большой вклад и предложения.

...