ISyncMetadataStoreSerializer::DeserializeReplicaMetadata
Deserializa el contenido de un archivo de metadatos canónico en un almacén de Metadata Storage Service. Opcionalmente, actualiza el formato del almacén de metadatos cuando cambia la versión del proveedor.
HRESULT DeserializeReplicaMetadata(
IStream * pStream,
DWORD dwExpectedProviderCompatibilityVersion,
IProviderMetadataUpgradeCallback * pProviderUpgradeCallback);
Parámetros
- pStream
[in] Secuencia que contiene los metadatos serializados para una réplica determinada.
- dwExpectedProviderCompatibilityVersion
[in] Versión de compatibilidad de proveedor que se espera que esté incluida en el archivo de metadatos canónico. Si la versión esperada no coincide con la versión real, se produce un error de diseño en la deserialización si pProviderUpgradeCallback es NULL, o bien se llama a los métodos de pProviderUpgradeCallback cuando pProviderUpgradeCallback no es NULL. Para obtener más información, vea Obtener acceso a los metadatos desde componentes con versiones diferentes y Actualizar la versión del almacén de metadatos.
- pProviderUpgradeCallback
[in] Métodos de devolución de llamada a los que se llama cuando se debe actualizar el formato del almacén de metadatos porque la versión del proveedor contenido en los metadatos serializados no es igual que la de dwExpectedProviderCompatibilityVersion.
Valor devuelto
S_OK
S_FALSE si el valor de contador superior de la secuencia serializada es menor o igual que el valor de contador superior del almacén de metadatos. En este caso, no hay metadatos adicionales para deserializar.
E_OUTOFMEMORY
E_POINTER
SYNC_E_INVALIDOPERATION, si se llama al método sin un almacén de metadatos abierto.
SYNC_E_METADATA_ACTIVE_TRANSACTION_REQUIRED, si no está disponible una transacción desde la que deserializar los metadatos.
SYNC_E_METADATA_STORE_DESERIALIZATION_ERROR, si se produce un error de formato de archivo durante la deserialización o si el contenido del archivo es incompatible con el esquema de la réplica de destino.
SYNC_E_METADATA_STORE_DESERIALIZATION_PROVIDER_VERSION_MISMATCH, si la versión de compatibilidad del proveedor especificada para dwExpectedProviderCompatibilityVersion no coincide con la versión especificada en el archivo de metadatos canónico y pProviderUpgradeCallback es NULL.
Notas
Se deben cumplir tres condiciones antes de llamar a este método:
El almacén de metadatos debe estar abierto. Para abrir un almacén, llame a ISqlSyncMetadataStore::OpenStore o ISqlSyncMetadataStore::CreateStore.
La réplica para la que se deserializan los datos ya debe tener inicializado su almacén de metadatos. Para inicializar un almacén de metadatos, llame a ISyncMetadataStore::InitializeReplicaMetadata.
Debe estar disponible una transacción activa en el objeto ISqlSyncMetadataStore. Para iniciar una transacción, llame a ISyncMetadataStore::BeginTransaction.
Si se llama a este método cuando no se cumple alguna de estas condiciones, el valor devuelto es un error.
Este método se puede utilizar como parte del procedimiento para actualizar el esquema de los metadatos cuando cambia la versión del proveedor. Para obtener más información, vea Actualizar la versión del almacén de metadatos.