What are Microsoft.Synchronization.MetadataStorage.dll or MetaStore21.dll dependencies RRS feed

  • Question

  • Hi,

    I have written an application on SyncFramework (uses knowledge provider and SqlMetadataStore). It runs localy on my PC perfect.

    But I am preparing to deploy it to WindowsAzure as a Worker role, so I adopted my app as written in http:// msdn.microsoft.com/en-us/library/ff928660.aspx , except that I added libraries "MetaStore21.dll" and "Synchronization21.dll"  to catalog "synchronization.assemblies" (in my case, testings threw exceptions of missing this COM libraries). So before deploying to Azure, I tried to test my application on a 64bit VM (Windows 7, .NET 4.5), which has no SyncFramework installed to test if my app is SyncFramework instalation independent as it will be on Azure.

    So running the app I recieve an error:

    FTSP.Synchronizer.Program  -  Microsoft.Synchronization.SyncException: Error HRESULT E_FAIL has been returned from a call to a COM component. ---> System.Runtime.InteropServices.COMException: Error HRESULT E_FAIL has been returned from a call to a COM component.
       at Microsoft.Synchronization.MetadataStorage.SyncMetadataStoreClass.OpenStore(String pcszFileName, UInt32 ulLcid)
       at Microsoft.Synchronization.MetadataStorage.SqlMetadataStore.OpenStore(String fileName, CultureInfo locale)
       --- End of inner exception stack trace ---
       at Microsoft.Synchronization.MetadataStorage.SqlMetadataStore.OpenStore(String fileName, CultureInfo locale)
       at FTSP.ProviderBase.SyncProviderBase.InitializeMetadataStore() in d:\Projects\4TeamSyncPlatform\src\4TeamSyncPlatform\FTSyncProviderBase\SyncProviderBase.cs:line 626
       at FTSP.ProviderBase.SyncProviderBase.BeginSession(SyncProviderPosition position, SyncSessionContext syncSessionContext) in d:\Projects\4TeamSyncPlatform\src\4TeamSyncPlatform\FTSyncProviderBase\SyncProviderBase.cs:line 120
       at Microsoft.Synchronization.CoreInterop.ISyncSession.Start(CONFLICT_RESOLUTION_POLICY resolutionPolicy, _SYNC_SESSION_STATISTICS& pSyncSessionStatistics)
       at Microsoft.Synchronization.KnowledgeSyncOrchestrator.DoOneWaySyncHelper(SyncIdFormatGroup sourceIdFormats, SyncIdFormatGroup destinationIdFormats, KnowledgeSyncProviderConfiguration destinationConfiguration, SyncCallbacks DestinationCallbacks, ISyncProvider sourceProxy, ISyncProvider destinationProxy, ChangeDataAdapter callbackChangeDataAdapter, SyncDataConverter conflictDataConverter, Int32& changesApplied, Int32& changesFailed)
       at Microsoft.Synchronization.KnowledgeSyncOrchestrator.DoOneWayKnowledgeSync(SyncDataConverter sourceConverter, SyncDataConverter destinationConverter, SyncProvider sourceProvider, SyncProvider destinationProvider, Int32& changesApplied, Int32& changesFailed)
       at Microsoft.Synchronization.KnowledgeSyncOrchestrator.Synchronize()
       at Microsoft.Synchronization.SyncOrchestrator.Synchronize()
       at FTSP.Synchronizer.Program.Synchronize(SyncProviderBase localProvider, SyncProviderBase remoteProvider) in d:\Projects\4TeamSyncPlatform\src\4TeamSyncPlatform\FTSP.Worker\Program.cs:line 305

    As for me, it seems it cant find some dependent library, but which??? Or should I include some othe  COM library to manifest?

    Can anyone help me to solve the problem?

    • Edited by Aidas Stalmokas Wednesday, December 5, 2012 12:20 PM Last question detalized
    Wednesday, December 5, 2012 11:57 AM


  • Hi, 

    After such hours of research, I found the solution!!! 

    The MSDN article Exercise 2: Using Start-Up Tasks to Register a COM Component worked for me. The difference in my case was, that I should add 4 more SyncFx libraries to "amd64" catalog ( 

    MetaStore21.dll, Msfdb.dll, Msfdbqp.dll and Msfdbse.dll) and add one more Startup Task to Service Definition file - to register COM library MetaData21.dll.

    They were needed because I used SqlMetadataStore.

    I hope it will save time for You.

    Monday, December 10, 2012 2:53 PM