Периодические обновления Access DB на C # через VPN

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

Я пытаюсь разработать интерфейс для базы данных Access 2010, который позволит пользователям добавлять / изменять записи. Некоторые пользователи используют VPN для подключения к БД, и текущая модель формы навигации Access 2010, которую мы используем, ужасающе медленная, независимо от скорости соединения. Я убедился, что мы можем получить доступ к БД через VPN без проблем с привилегиями или безопасностью, но даже через механизм OleDb существует значительная задержка при доступе к данным.

Я хотел бы иметь возможность отправлять / получать обновления в фоновом режиме, скажем, каждые 5-10 минут, чтобы конечный пользователь мог обновлять его по мере необходимости и записывать изменения без пользователь действительно осознает задержку. Достаточно ли для этого простого использования фонового рабочего, или есть лучший способ отправлять «пакеты» обновлений через соединение?

Опять же, я знаю, что это точно не зависит от кода, но я никогда раньше не работал с обновлениями C # и БД, поэтому я как бы учусь по ходу. Почти все результаты, которые я нашел, касались других механизмов, кроме OleDb, таких как SQL, но мы заблокированы в использовании Access (файла accdb), поскольку у нас нет других доступных нам движков баз данных. Я ценю любую помощь, в какой бы форме она ни была.

Это достаточно новый проект, и пока единственный код, который я разработал для этого, состоял в инициализации соединения с БД, чтобы убедиться, что это вообще возможно.


person Keven M    schedule 11.12.2013    source источник
comment
Что произойдет, если соединение выйдет из строя, пока в рабочем процессе есть ожидающие обновления? (Это VPN, и люди ходят с ноутбуками, это может легко случиться.)   -  person millimoose    schedule 11.12.2013
comment
То, что вы описываете, безусловно, возможно и, возможно, является правильным способом доступа к базе данных в графическом интерфейсе. Но это не значит, что это не сделает вашу архитектуру более сложной. Например. решение проблемы ожидающего обновления, о котором я могу сразу подумать, заключается в использовании какой-то серверной службы, которая сохраняла бы необработанные транзакции, используя надежный, надеюсь, способ и обрабатывала бы их позже, например, очередь сообщений, которая уже немного отодвигает это от изучение C # и баз данных по мере выполнения задачи.   -  person millimoose    schedule 11.12.2013
comment
(Мне кажется, что избавиться от Access в пользу чего-то, что действительно создано для эффективной обработки одновременных пользователей, будет проще, чем пытаться сгладить ошибки с задержкой записи в файл Access.)   -  person millimoose    schedule 11.12.2013
comment
Что касается ожидающих обновлений, это не проблема, так как у нас есть 2 человека, которые регулярно используют VPN, поскольку они работают из дома, а двое других находятся в офисе ежедневно. Я тоже довольно хорошо знаю C #, это аспект БД, в котором я относительно новичок. И я бы хотел полностью отказаться от Access, но я на самом деле не ИТ в своей компании, это своего рода незаметная ситуация ... это не запрещено, просто наша ИТ-служба имеет тенденцию быть довольно территориальной. :)   -  person Keven M    schedule 11.12.2013
comment
Под серверной службой, о которой вы говорите, вы имеете в виду процесс фоновой группы (например, рабочий процесс C #) или что-то вроде веб-службы?   -  person Keven M    schedule 11.12.2013
comment
Под фоновой службой я имел в виду веб-службу, работающую на компьютере или рядом с ним, на котором расположена база данных Access. Идея состоит в том, что как только пользователь действительно нажимает кнопку «Сохранить в форме» и, следовательно, имеет основание полагать, что его формы были сохранены, они фактически должны быть сохранены где-нибудь, где они не будут потеряны. Т.е. не в памяти в другом потоке.   -  person millimoose    schedule 11.12.2013
comment
Вы можете сделать это на локальном компьютере и повторить попытку отправить их оттуда в БД, хотя мне кажется, что серверная веб-служба кажется мне лучшим вариантом. В основном потому, что он позволяет вам избавиться от одновременного доступа к базе данных Access, который, по-видимому, является основной причиной ваших проблем. Только серверная веб-служба может открыть файл базы данных локально для себя.   -  person millimoose    schedule 11.12.2013
comment
Изучили ли вы какие-либо варианты удаленного доступа (например, службы терминалов, удаленный рабочий стол, LogMeIn и т. Д.)?   -  person Gord Thompson    schedule 11.12.2013


Ответы (1)


MS Access не предназначен для одновременного использования. Когда вы открываете базу данных доступа на удаленном компьютере, вы также загружаете всю базу данных в память клиентской машины, поэтому чем больше файл, тем медленнее он становится. Если вы хотите сделать его одновременным, используйте MS SQL Express и связали его с вашим MS Access заявление. Таким образом, это намного быстрее и лучше.

Кроме того, он бесплатный и может быть высококлассным, если вам нужно.

person Jade    schedule 11.12.2013
comment
Вы можете скачать его здесь microsoft.com/en-us / sqlserver / editions / 2012-editions / - person Jade; 11.12.2013
comment
-1 Хотя я согласен с тем, что для медленного соединения WAN / VPN использование серверной части SQL Server, вероятно, было бы лучше, чем использование серверной части Access, операторы MS Access не предназначены для одновременного использования. и Когда вы открываете доступ к базе данных на удаленном компьютере, вы также загружаете всю базу данных в память клиентской машины, оба явно неверны. - person Gord Thompson; 11.12.2013