Я использую базу данных SQL и пишу клиентское приложение VB.NET. Это приложение используется на нескольких компьютерах одновременно. Если один из клиентов обновляет базу данных, я хотел бы, чтобы другие клиенты знали об этом обновлении.
Обновление базы данных SQL в режиме реального времени между несколькими клиентами VB.NET
Ответы (4)
Если вы используете MS SQL Server, вы могли бы использовать уведомления Service Broker отправить уведомление клиентам, когда данные будут обновлены. Это не то, что у меня есть личный опыт использования, хотя.
- Убедитесь, что в вашей таблице есть столбец DateUpdated.
- При чтении таблицы сохраните значение dateUpdated в переменную памяти.
- При обновлении таблицы укажите DateUpdated ‹=
- Проверьте количество строк, обновленных на шаге 3.
- Если шаг 4 возвращает 0, это означает, что кто-то еще обновил историю, пока текущий пользователь просматривал данные.
Обратите внимание, что это применимо только в том случае, если вы заинтересованы в обнаружении обновлений при сохранении данных. Если вы хотите, чтобы клиентское приложение было уведомлено, если отображаемая в данный момент запись была обновлена, тогда, как уже упоминалось, вам придется использовать какие-то службы уведомлений.
Оглядевшись, я нашел полезную информацию о Service Broker. Я также прочитал следующее;
«Уведомление о запросах предназначено для данных, которые не меняются часто. Его также лучше всего использовать в серверных приложениях (таких как ASP.NET или удаленное взаимодействие), а не в клиентских приложениях (таких как Windows Forms). Помните, что каждый запрос на уведомление регистрируется в SQL Server. Если у вас есть множество клиентских приложений, каждое из которых запрашивает уведомление, это может создать проблему с ресурсами на вашем сервере. ограничьте использование уведомления о запросе не более чем десятью одновременными пользователями».
Это меня беспокоит, потому что у меня есть около 10 таблиц, которые обновляются довольно часто (каждые 5 секунд).
Может быть, у кого-то есть опыт использования уведомлений Service Broker для более часто меняющихся данных.
Большое спасибо!
Марсель
У меня такая же проблема. Мое решение состояло в том, чтобы создать таблицу аудита! Таблица аудита содержит все имена таблиц и еще один столбец с датой и временем.
Когда пользователь меняет данные, также обновляется дата и время в таблице аудита.
Все пользователи проверяют каждые 4 секунды таблицу аудита. Если одна из таблиц была обновлена, пользователь перезагружает всю таблицу так, как она была обновлена.
Извините за мой английский.