ISyncMetadataStoreSerializer::DeserializeReplicaMetadata
Выполняет десериализацию содержимого канонического файла метаданных в хранилище службы хранилища метаданных. Может обновлять формат хранилища метаданных при изменении версии поставщика.
HRESULT DeserializeReplicaMetadata(
IStream * pStream,
DWORD dwExpectedProviderCompatibilityVersion,
IProviderMetadataUpgradeCallback * pProviderUpgradeCallback);
Параметры
- pStream
[in] Поток, содержащий сериализованные метаданные для определенной реплики.
- dwExpectedProviderCompatibilityVersion
[in] Версия совместимости поставщика, которая должна быть включена в канонический файл метаданных. Если ожидаемая версия не совпадает с текущей, то десериализация завершится ошибкой (если параметр pProviderUpgradeCallback равен NULL) или будут вызваны методы pProviderUpgradeCallback (если параметр pProviderUpgradeCallback не равен NULL). Дополнительные сведения см. в разделах Доступ к метаданным из компонентов с различными версиями и Обновление версии хранилища метаданных.
- pProviderUpgradeCallback
[in] Методы обратного вызова, которые вызываются при необходимости обновления формата хранилища метаданных, поскольку версия поставщика, указанная в сериализованных метаданных, не совпадает со значением dwExpectedProviderCompatibilityVersion.
Возвращаемое значение
S_OK.
S_FALSE, если наибольшее значение счетчика тактов в сериализованном потоке меньше или равно наибольшему значению счетчика тактов в хранилище метаданных. В этом случае дополнительные метаданные для десериализации отсутствуют.
E_OUTOFMEMORY
E_POINTER
SYNC_E_INVALIDOPERATION, если метод вызван без открытого хранилища метаданных.
SYNC_E_METADATA_ACTIVE_TRANSACTION_REQUIRED, если недоступна транзакция, в рамках которой можно произвести десериализацию метаданных.
SYNC_E_METADATA_STORE_DESERIALIZATION_ERROR, если в процессе десериализации были обнаружены ошибки формата файла, либо если содержимое файла несовместимо со схемой целевой реплики.
SYNC_E_METADATA_STORE_DESERIALIZATION_PROVIDER_VERSION_MISMATCH, если версия совместимости поставщика, указанная для параметра dwExpectedProviderCompatibilityVersion, не соответствует версии, указанной в файле канонических метаданных, а значение pProviderUpgradeCallback равно NULL.
Замечания
Вызов этого метода возможен при соблюдении трех условий.
Хранилище метаданных должно быть открыто. Открыть хранилище можно вызовом метода ISqlSyncMetadataStore::OpenStore или ISqlSyncMetadataStore::CreateStore.
Хранилище метаданных реплики, для которой десериализуются данные, должно быть уже инициализировано. Чтобы инициализировать хранилище метаданных, вызовите метод ISyncMetadataStore::InitializeReplicaMetadata.
Для объекта ISqlSyncMetadataStore должна быть доступна активная транзакция. Начать транзакцию можно вызовом метода ISyncMetadataStore::BeginTransaction.
В результате вызова этого метода, когда не выполняется какое-либо из этих условий, возвращается значение, сигнализирующее об ошибке.
Этот метод может быть использован в составе процедуры обновления схемы метаданных при изменении версии поставщика. Дополнительные сведения см. в разделе Обновление версии хранилища метаданных.