ISyncMetadataStoreSerializer::DeserializeReplicaMetadata
正規のメタデータ ファイルのコンテンツを、Metadata Storage Service ストアにシリアル化解除します。オプションで、プロバイダーのバージョンが変更されるときにメタデータ ストアの形式をアップグレードします。
構文
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 (シリアル化解除中にファイル形式のエラーが発生した場合、またはファイルの内容と対象となるレプリカのスキーマに互換性がない場合)
SYNC_E_METADATA_STORE_DESERIALIZATION_PROVIDER_VERSION_MISMATCH (dwExpectedProviderCompatibilityVersion に指定されたプロバイダー互換性バージョンが、正規のメタデータ ファイルで指定されたバージョンと一致せず、pProviderUpgradeCallback が NULL である場合)
説明
このメソッドを呼び出す前に、次の 3 つの条件が満たされている必要があります。
メタデータ ストアが開かれている必要があります。ストアを開くには、ISqlSyncMetadataStore::OpenStore または ISqlSyncMetadataStore::CreateStore を呼び出します。
データを逆シリアル化するレプリカのメタデータ ストアが初期化されている必要があります。メタデータ ストアを初期化するには、ISyncMetadataStore::InitializeReplicaMetadata を呼び出します。
アクティブなトランザクションは、ISqlSyncMetadataStore オブジェクトで使用できる必要があります。トランザクションを開始するには、ISyncMetadataStore::BeginTransaction を呼び出します。
この条件のいずれかが満たされていない場合にこのメソッドを呼び出すと、戻り値がエラーになります。
このメソッドは、プロバイダーのバージョンが変更される際にメタデータ スキーマをアップグレードするプロシージャの一部として使用できます。詳細については、「メタデータ ストアのアップグレード」を参照してください。