Шаг 58 - Свойство DesignMasterID

Описание
Задает или возвращает 16-байтовое значение, однозначно определяющее основную реплику в наборе реплик (только в рабочей области Microsoft Jet).

Значение
Задаваемое или возвращаемое значение содержит идентификатор GUID, однозначно определяющий основную реплику набора.

Замечания
Свойство DesignMasterID необходимо определять только в том случае, если требуется указать в наборе другую основную реплику. Задание значение данного свойства делает основной репликой конкретную реплику из набора реплик.
Ни в коем случае не создавайте в наборе вторую основную реплику. Наличие двух основных реплик может привести к потере данных.
В некоторых обстоятельствах — например, если основная реплика уничтожена или повреждена — данное свойство можно определить для текущей реплики. Однако определение данного свойства для реплики при наличии в наборе другой основной реплики может привести разделение набора на два несогласованных набора, что сделает невозможной дальнейшую синхронизацию данных.
Если решено сделать реплику новой основной репликой, следует перед определением для нее свойства DesignMasterID выполнить синхронизацию этой реплики со всеми остальными репликами набора. Превратить реплику в основную можно только в том случае, если она открыта для монопольного доступа.
Если основной репликой назначается реплика, доступная только для чтения, то доступными для чтения будут как новая, так и старая основные реплики.
Значение свойства DesignMasterID хранится в системной таблице "MSysRepInfo".

Пример
Следующая программа задает значение свойства DesignMasterID, совпадающее со значением свойства ReplicaID другой базы данных, делая вторую базу данных основной репликой в наборе реплик. Для старой и новой основной реплики выполняется синхронизация, позволяющая обновить структуру реплик. Для выполнения данного примера необходимо создать основную реплику и реплику, включить в программу их имена и пути, а затем запустить данную программу из базы данных, отличной от новой и старой основной реплики.

Sub SetNewDesignMaster(strOldDM as String, strNewDM as String)

	Dim dbsOld As Database
	Dim dbsNew As Database

	' Открывает текущую основную реплику для монопольного доступа.
	Set dbsOld = OpenDatabase(strOldDM, True)

	' Открывает базу данных, которая будет новой
	' основной репликой.
	Set dbsNew = OpenDatabase(strNewDM)

	' Назначает новую базу данных основной репликой.
	dbsOld.DesignMasterID = dbsNew.ReplicaID

	' Выполняет синхронизацию старой основной реплики с новой
	' основной репликой и включает двухсторонний обмен.

	dbsOld.Synchronize strNewDM, dbRepImpExpChanges
	dbsOld.Close
	dbsNew.Close

End Sub

Предыдущий Шаг | Следующий Шаг | Оглавление
Автор Каев Артем - 10.03.2002