Главная страница Случайная страница КАТЕГОРИИ: АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника |
Практическая работа 29. Репликация и синхронизация баз данных
Для приобретения навыков репликации и синхронизации нужно выполнить несколько этапов: 1. сделать ссылку на библиотеку Microsoft Jet and Replication Objects 2.1 Library (меню Проект Ссылки библиотека OK) и библиотеку, обеспечивающую работу с DAO: Microsoft DAO 3, 54 Objects Library, 2. создать главную реплику (Command1_Click (), см. ниже): o открыть базу данных, o создать свойство Replicable и присвоить ему значение " Т", 3. cоздать копию главной реплики (Command2_Click (), см. ниже): o открыть базу данных, o использовать метод MakeReplica, 4. внести изменения в главную реплику и еe копию: o внести изменение в 1-ой записи главной реплики и копии, o зафиксировать изменение значения поля s_Generation (см. ниже) при изменении содержимого таблиц; там появятся нули вместо единиц и соответствующая запись будет позднее скопирована при выполении процедуры синхронизации, 5. выполнение синхронизации - копирование изменений главной реплики в реплику и наоборот (Command3_Click (), см. ниже): o открыть базу данных, o использовать метод Cynchronize объекта Database. Последовательность действий: · ввести код процедур Command1_Click () и Command2_Click (), см. ниже, · стартовать первую процедуру (создание главной реплики), · после остановки выполнения проекта открыть базу данных (главную реплику) в приложении Visdata, найти добавленные поля каждой таблицы: в каждую таблицу главной реплики добавлены 3 поля: o s_Generation, идентифицирующее записи, которые были изменены Вами/сотрудниками учреждения. После изменения записей, содержимое поля меняется с 1 на 0 (сначала везде была 1) и в процессе синхронизации, т.е. позднее, пересылаются только записи, которым соответствует значение поля 0, o s_GUID, содержащее идентификатор каждой записи, o s_Lineage, хранящее количество изменений записи. Пояснения: после создания главной реплики в главной реплике появились новые системные таблицы, появились дополнительные свойства главной реплики. Свойство Replicable (установлено в Т) означает, что для базы данных можно создавать реплики. После создания главной реплики появились новые свойства любой таблицы главной реплики. · стартовать вторую процедуру (создание реплики), · после остановки выполнения проекта просмотреть базу данных в приложении Visdata (в базе данных содержатся те же самые таблицы), · открыть таблицу MSysReplicas, содержащую информацию о каждом члене репликационного набора, где появилась вторая запись из-за создания реплики (ранее была только одна запись), · поочерeдно открыть базы данных (главную реплику и реплику) в любом приложении, предназначенном для работы с базами данных и сделать изменения в одной записи какой-либо таблицы. Наблюдать изменения поля s_Generation - появление чисел 0 вместо 1 после внесения изменений Вами/сотрудниками учреждения в записи таблиц главной реплики и реплики, · создать и стартовать процедуру Command3_Click (), см. код ниже, · после остановки выполнения проекта загрузить реплику в приложение Visdata, просмотреть содержимое соответствующей таблицы (в этой таблице появились изменения, сделанные ране в главной реплике) и значения поля s_Generation: в процессе синхронизации значение поля увеличивается на 1 при каждом изменении записи. В тех случаях, когда в разных репликах изменяется одна и та же запись несkолько раз, то в итоге в процессе синхронизации копируются данные той реплики, которая изменила запись большее число раз. В случае равенства числа изменений Microsoft Jet выбирает запись из таблицы с наименьшим значением ReplicaID, · cделать изменения в реплике 1 раз, в главной реплике - 2 раза. Сделать щелчок на третьей командной кнопке, затем проверить результат синхронизации. Private Sub Command1_Click() ' создание главной репликиDim dbHaupt As Database, replicaProp As Property' открыть базуSet dbHaupt = OpenDatabase(" C: \rep\sabi.mdb", True) ' создать свойство ReplicableSet replicaProp = dbHaupt.CreateProperty(" Replicable", dbText, " T")dbHaupt.Properties.Append replicaProp ' добавить свойство' свойству присвоить значение TruedbHaupt.Properties(" Replicable") = " T" End SubPrivate Sub Command2_Click() ' создание репликиDim dbHaupt As Database' открыть базуSet dbHaupt = OpenDatabase(" C: \rep\sabi.mdb", True) 'создать новый объект репликационного набораdbHaupt.MakeReplica " C: \rep\sabicopy.mdb", " Replica of " & " dbHaupt" dbHaupt.CloseEnd SubPrivate Sub Command3_Click() ' процесс синхронизацииDim dbHaupt As Database' открыть базу данных - главную репликуSet dbHaup = OpenDatabase(" C: \rep\sabi.mdb", True) ' копирование изменений dbHaupt.Synchronize " C: \rep\sabicopy.mdb" End SubADO
|