Ответы в этой теме заполнены неверной информацией о Jet Replication от людей, которые явно не использовали его и просто повторяют то, что слышали, или приписывают проблемы Jet Replication, которые фактически отражают ошибки проектирования приложения.
Возможно использовать Jet
Репликация встроена в Access, но я
предупреждает вас, это довольно хлопотно.
Jet Replication не является фальшивкой. Он абсолютно надежен при правильном использовании, как и любой другой сложный инструмент. Это правда, что определенные вещи, которые не вызывают проблем в нереплицируемой базе данных, могут привести к проблемам при репликации, но это вполне разумно из-за характера репликации с помощью любого ядра базы данных.
Это также испортит ваш ПК
на каких столах вы это делаете, потому что
он выбирает случайные целые числа со знаком, чтобы попробовать
и избегать столкновений клавиш, так что вы можете
в конечном итоге с -1243482392912 в качестве вашего
следующий ПК на данной записи. Это
PITA для ввода, если вы делаете какие-либо
вид поиска по нему (как клиент
ID, номер заказа и т. Д.)
Суррогатные Autonumber PK никогда не должны быть открыты для пользователей. Это бессмысленные числа, используемые для соединения записей за кулисами, и если вы предоставляете их пользователям, это ОШИБКА В ВАШЕМ ДИЗАЙНЕ ПРИЛОЖЕНИЯ.
Если вам нужны порядковые номера, вам придется свернуть свои собственные и решить вопрос о том, как предотвратить столкновения между вашими репликами. Но это проблема репликации в любом ядре базы данных. SQL Server предлагает возможность выделения блоков порядковых номеров для отдельных реплик на уровне ядра базы данных, и это действительно хорошая функция, но она достигается за счет увеличения административных издержек из-за поддержки нескольких экземпляров SQL Server (со всеми проблемами безопасности и производительности что влечет за собой). В Jet Replication вам придется делать это в коде, но это вряд ли сложная проблема.
Другой альтернативой может быть использование составного PK, где один столбец указывает исходную реплику.
Но это не какой-то недостаток в реализации Jet репликации - это проблема для любого сценария репликации с необходимостью значимых порядковых номеров.
Вы не можете автоматизировать доступ
синхронизация (возможно, вы можете подделать
как то с помощью VBA. но
тем не менее, это будет работать только тогда, когда
база данных открыта).
Это явно не соответствует действительности. Если вы установите синхронизатор Jet, вы можете запланировать синхронизацию (прямую, косвенную или интернет-синхронизацию). Даже без этого вы можете запланировать периодический запуск VBScript и синхронизацию. Это всего лишь два способа выполнения автоматической синхронизации Jet без необходимости открывать приложение Access.
Цитата из документации MS:
Использовать объекты Jet и Replication
JRO действительно не самый лучший способ управления Jet Replication. С одной стороны, он имеет только одну функцию, которой сам DAO не обладает, то есть способность инициировать косвенную синхронизацию в коде. Но если вы собираетесь добавить зависимость в свое приложение (JRO требует ссылку или может использоваться с поздним связыванием), вы также можете добавить зависимость от действительно полезной библиотеки для управления Jet Replication, и это TSI Synchronizer , созданный Майклом Капланом, когда-то ведущим в мире экспертом по Jet Replication (который с тех пор перешел на интернационализацию как свою область концентрации). Он дает вам полный программный контроль почти всех функций репликации, которые предоставляет Jet, включая планирование синхронизации, запуск всех видов синхронизации и столь необходимую команду MoveReplica (единственный допустимый способ перемещения или переименования реплики без прерывания репликации).
JRO - один из уродливых пасынков прерванной кампании Microsoft ADO-Everywhere. Его целью является предоставление функциональности, специфичной для Jet, в дополнение к тому, что поддерживается в самом ADO. Если вы не используете ADO (и вы не должны быть в приложении Access с бэкэндом Jet), то вы на самом деле не хотите использовать JRO. Как я уже говорил выше, он добавляет только одну функцию, которая еще не доступна в DAO (то есть инициирует косвенную синхронизацию). Я не могу не думать, что Microsoft была злобной, создав автономную библиотеку для специфической для Jet функциональности, а затем намеренно упустила все невероятно полезные функции, которые они могли бы поддерживать, если бы они выбрали.
Теперь, когда я избавился от ошибочных утверждений в ответах, предложенных выше, вот моя рекомендация:
Поскольку у вас есть инфраструктура только для добавления, сделайте то, что рекомендовал @Remou, и настройте что-нибудь, чтобы вручную отправлять новые записи туда, куда им нужно. И он прав, что вам все равно придется иметь дело с проблемой ПК, как если бы вы использовали Jet Replication. Это связано с тем, что это требование добавления новых записей в нескольких местах, и является общим для всех приложений репликации / синхронизации.
Но одно предостережение: если сценарий надстройки изменится в будущем, вы будете вынуждены начинать с нуля или писать целый код для управления удалениями и обновлениями (это непросто - доверие я это сделал!) Одно из преимуществ простого использования Jet Replication (даже если оно наиболее ценно для двусторонней синхронизации, т. Е. Редактирования в нескольких местах) состоит в том, что он будет обрабатывать сценарий «только для добавления» без проблем, а затем легко обрабатывать полную репликацию слиянием, если она станет требование в будущем.
И наконец, хорошее место для начала с Jet Replication - Jet Replication Wiki . Страницы «Ресурсы, лучшие практики и вещи, которым нельзя верить», вероятно, являются лучшими местами для начала.