Многопользовательский доступ и синхронизация
Поскольку Microsoft SQL Server 2005 Compact Edition (SQL Server Compact Edition) поддерживает многопользовательский доступ, пользователи могут работать с базой данных в то время, когда она реплицируется. При разработке приложений, использующих SQL Server Compact Edition, необходимо учитывать, что подобные ситуации могут вызывать конфликты с изменениями, получаемыми от издателя. Подобные конфликты называют локальными конфликтами данных.
Влияние многопользовательского доступа
При разработке приложений, использующих SQL Server Compact Edition, необходимо учитывать влияние многопользовательского доступа. В следующей таблице перечислены некоторые общие возможности SQL Server Compact Edition и проблемы, которые могут возникать при использовании этих возможностей.
Возможность | Проблема |
---|---|
Блокировка |
При синхронизации полученные от издателя изменения могут быть не сохранены в базе данных подписчика из-за блокировок данных. Если на подписчике выполняется изменение данных, то при возникновении долговременных блокировок данных синхронизация может завершиться неудачно. Чтобы предотвратить подобные ситуации, необходимо в приложении запретить изменение данных пользователем во время синхронизации. |
Сверка |
Если используется сверка и количество строк в базе данных SQL Server Compact Edition изменяется в процессе синхронизации, сверка завершается неудачно. Чтобы предотвратить подобные ситуации, необходимо в приложении запретить изменение данных пользователем во время синхронизации со сверкой. |
Повторная инициализация |
Во время повторной инициализации подписки уровень репликации удаляет, а затем повторно создает все реплицированные пользовательские и системные таблицы. Как и в случае с подписками SQL Server, при повторной инициализации теряются все изменения, внесенные после начала синхронизации. Чтобы предотвратить потерю данных, необходимо в приложении запретить изменение данных пользователем во время повторной инициализации. |
Изменения схемы |
Для выполнения всех операций языка DDL (изменения схемы) необходим монопольный доступ к таблице. Если таблица используется другим процессом, изменение схемы завершится неудачно. |
Изменения во время синхронизации |
Изменения данных, сделанные во время синхронизации, будут отправлены во время следующей синхронизации. Если сеанс синхронизации приводит к возникновению локального конфликта, строка разрешается на уровне строк, даже если для статьи используется отслеживание на уровне столбцов. |
Обнаружение и разрешение конфликтов
При работе в многопользовательской среде во время синхронизации могут происходить изменения данных, вызывающие конфликты. SQL Server Compact Edition обнаруживает конфликты на стороне клиента, но не выполняет разрешение конфликтов. Вместо этого сведения о конфликте передаются издателю, чтобы он разрешил данный конфликт во время следующей синхронизации.
Большая часть конфликтов разрешается на издателе во время следующей синхронизации. Однако если возникает конфликт проверки целостности, издатель требует провести повторную синхронизацию с устройством. В этом случае повторная синхронизация может выполняться не более двух раз.
Дополнительные сведения об обнаружении и разрешении конфликтов см. в разделе Обнаружение и разрешение конфликтов репликации.
Использование свойства SubscriberConflicts
Внесение изменений в локальную базу данных во время синхронизации может привести к конфликтам. Если подписчику не удается сохранить полученную от издателя строку, считается, что возник конфликт у подписчика, и устанавливается свойство SubscriberConflicts. При возникновении конфликта у подписчиков SQL Server конфликт разрешается подписчиком. Однако в SQL Server Compact Edition отсутствует посредник, поэтому все конфликты должны разрешаться издателем. Приложение можно разработать таким образом, чтобы после каждой синхронизации проверялось значение свойства SubscriberConflicts. Если это значение не равно нулю, необходимо выполнить повторную синхронизацию данных, чтобы издатель мог разрешить конфликт.
См. также
Основные понятия
Синхронизация данных (SQL Server Compact Edition)
Синхронная синхронизация данных
Асинхронная синхронизация данных
Обнаружение и разрешение конфликтов репликации