Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
Deserializza il contenuto di un file dei metadati canonico in un archivio del servizio di archiviazione dei metadati. Aggiorna facoltativamente il formato dell'archivio dei metadati quando si modifica la versione del provider.
HRESULT DeserializeReplicaMetadata(
IStream * pStream,
DWORD dwExpectedProviderCompatibilityVersion,
IProviderMetadataUpgradeCallback * pProviderUpgradeCallback);
Parametri
- pStream
[in] Flusso contenente i metadati serializzati per una determinata replica.
- dwExpectedProviderCompatibilityVersion
[in] Versione di compatibilità del provider che si prevede sia inclusa nel file dei metadati canonico. Se la versione prevista non corrisponde a quella effettiva, la deserializzazione non riesce per motivi strutturali quando pProviderUpgradeCallback è NULL oppure vengono chiamati i metodi pProviderUpgradeCallback quando pProviderUpgradeCallback non è NULL. Per ulteriori informazioni, vedere Accesso ai metadati da componenti con versioni diverse e Aggiornamento della versione dell'archivio dei metadati.
- pProviderUpgradeCallback
[in] Metodi di callback chiamati quando è necessario aggiornare il formato dell'archivio dei metadati perché la versione del provider contenuta nei metadati serializzati non corrisponde a dwExpectedProviderCompatibilityVersion.
Valore restituito
S_OK.
S_FALSE se il valore del conteggio più elevato nel flusso serializzato è minore o uguale al valore del conteggio più elevato nell'archivio dei metadati. In questo caso, non ci sono metadati aggiuntivi da deserializzare.
E_OUTOFMEMORY
E_POINTER
SYNC_E_INVALIDOPERATION se il metodo viene chiamato senza un archivio dei metadati aperto.
SYNC_E_METADATA_ACTIVE_TRANSACTION_REQUIRED se non è disponibile alcuna transazione in cui deserializzare i metadati.
SYNC_E_METADATA_STORE_DESERIALIZATION_ERROR se durante la deserializzazione vengono rilevati errore del formato di file o se il contenuto del file è incompatibile con lo schema della replica di destinazione.
SYNC_E_METADATA_STORE_DESERIALIZATION_PROVIDER_VERSION_MISMATCH se la versione di compatibilità del provider specificata per dwExpectedProviderCompatibilityVersion non corrisponde alla versione specificata nel file dei metadati canonico e pProviderUpgradeCallback è NULL.
Osservazioni
È necessario che siano soddisfatte tre condizioni prima di chiamare questo metodo:
L'archivio dei metadati deve essere aperto. Aprire un archivio chiamando ISqlSyncMetadataStore::OpenStore o ISqlSyncMetadataStore::CreateStore.
La replica per la quale vengono deserializzati i dati deve già disporre del relativo archivio dei metadati inizializzato. Per inizializzare un archivio dei metadati, chiamare ISyncMetadataStore::InitializeReplicaMetadata.
Deve essere disponibile una transazione attiva sull'oggetto ISqlSyncMetadataStore. Avviare una transazione chiamando ISyncMetadataStore::BeginTransaction.
Se questo metodo viene chiamato quando una di queste condizioni non è soddisfatta, viene generato un valore restituito errato.
Questo metodo può essere utilizzato come parte della procedura per aggiornare lo schema dei metadati quando si modifica la versione del provider. Per ulteriori informazioni, vedere Aggiornamento della versione dell'archivio dei metadati.