ISyncMetadataStoreSerializer::DeserializeReplicaMetadata
将规范元数据文件的内容反序列化到元数据存储服务存储区。提供程序版本发生更改时,还可以选择升级元数据存储格式。
HRESULT DeserializeReplicaMetadata(
IStream * pStream,
DWORD dwExpectedProviderCompatibilityVersion,
IProviderMetadataUpgradeCallback * pProviderUpgradeCallback);
参数
- pStream
[in] 包含特定副本的序列化元数据的流。
- dwExpectedProviderCompatibilityVersion
[in] 应包含在规范元数据文件中的提供程序兼容版本。如果所需的版本与实际版本不一致,则应在 pProviderUpgradeCallback 为 NULL 时令反序列化失败,或者在 pProviderUpgradeCallback 不为 NULL 时调用 pProviderUpgradeCallback 方法。有关详细信息,请参阅访问来自不同版本的组件的元数据和升级元数据存储区版本。
- 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。
如果为 dwExpectedProviderCompatibilityVersion 指定的提供程序兼容版本与规范元数据文件中指定的版本不一致,并且 pProviderUpgradeCallback 为 NULL,则返回值为 SYNC_E_METADATA_STORE_DESERIALIZATION_PROVIDER_VERSION_MISMATCH。
备注
在调用此方法之前必须满足三个条件:
必须打开元数据存储区。调用 ISqlSyncMetadataStore::OpenStore 或 ISqlSyncMetadataStore::CreateStore 可打开存储区。
反序列化其数据的副本必须已初始化其元数据存储区。若要初始化元数据存储区,请调用 ISyncMetadataStore::InitializeReplicaMetadata。
活动事务必须对 ISqlSyncMetadataStore 对象可用。调用 ISyncMetadataStore::BeginTransaction 可启动事务。
在以上任一条件不满足时调用此方法会产生错误返回值。
此方法可用作在提供程序版本更改时升级元数据架构的过程的一部分。有关详细信息,请参阅升级元数据存储区版本。