本文介绍了同步Fx - SQL Express 2008< - > SQL Express 2008无法设置配置并继续syncin'的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

大家好,


首先,我想指出我的第一个问题。我是否需要在开始同步之前每次都配置和取消配置数据库?


如果没有我能告诉你是否需要配置的话?


我创建了一个类,所以我可以管理2个SQL Express数据库之间的配置和同步,但是我遇到的例外有困难。


这里的代码是OK。


 


 
SqlConnection sourceConn = new SqlConnection(ConfigManager.Config.SourceSyncConnectionString);
SqlConnection myConn = new SqlConnection(ConfigManager.Config.ConnectionString);

private void InitializeSync()
{
#region SET SOURCE PROVIDER

SqlSyncProvider sourceSqlProv = new SqlSyncProvider (" MomSync" ,sourceConn);

尝试
{
DbSyncScopeDescription sourceScope = new DbSyncScopeDescription(" MomSync" );

DbSyncTableDescription productsSourceTableDesc = SqlSyncDescriptionBuilder.GetDescriptionForTable(" Mom_Products" ,sourceConn);
DbSyncTableDescription customersSourceTableDesc = SqlSyncDescriptionBuilder.GetDescriptionForTable(" Mom_Customers" ,sourceConn);
DbSyncTableDescription ordersSourceTableDesc = SqlSyncDescriptionBuilder.GetDescriptionForTable(" Mom_Orders" ,sourceConn);
DbSyncTableDescription paymentsSourceTableDesc = SqlSyncDescriptionBuilder.GetDescriptionForTable(" Mom_Payments" ,sourceConn);

sourceScope.Tables.Add(productsSourceTableDesc);
sourceScope.Tables.Add(customersSourceTableDesc);
sourceScope.Tables.Add(ordersSourceTableDesc);
sourceScope.Tables.Add(paymentsSourceTableDesc);

SqlSyncScopeProvisioning sourceProvision = new SqlSyncScopeProvisioning(sourceConn,sourceScope);
sourceProvision.PopulateFromScopeDescription(sourceScope);
sourceProvision.SetCreateTableDefault(DbSyncCreationOption.Skip);

sourceProvision.Apply();
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}

#endregion

#区域 SET MY PROVIDER

SqlSyncProvider myProvider = new SqlSyncProvider(" ; MomClientSync" ,myConn);

尝试
{
DbSyncScopeDescription scopeSourceDesc = SqlSyncDescriptionBuilder.GetDescriptionForScope( MomSync" ,sourceConn);
SqlSyncScopeProvisioning clientProvision = new SqlSyncScopeProvisioning(myConn,scopeSourceDesc);
clientProvision.PopulateFromScopeDescription(scopeSourceDesc);
clientProvision.SetCreateTableDefault(DbSyncCreationOption.CreateOrUseExisting);

clientProvision.Apply();
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}

#endregion

# region SET SYNC ORCHESTRATOR

OrcheStrator = new SyncOrchestrator
{
LocalProvider = myProvider,
RemoteProvider = sourceSqlProv,
Direction = SyncDirectionOrder.UploadAndDownload
};

((SqlSyncProvider)OrcheStrator.LocalProvider)。ApplicationChangeFailed + = ApplyChangeFailedHandler;

#endregion
}

私人 void ApplyChangeFailedHandler( object sender,DbApplyChangeFailedEventArgs e)
{
LogErrors(e.Conflict.Type + "" + e.Error);
}

public void Synchronize()
{
SyncOperationStatistics syncStats = OrcheStrator.Synchronize();
}

private void DeProvision()
{
尝试
{
SqlSyncScopeDeprovisioning sourceDeprovision = new SqlSyncScopeDeprovisioning(sourceConn);
sourceDeprovision.DeprovisionStore();

SqlSyncScopeDeprovisioning clientDeprovision = new SqlSyncScopeDeprovisioning(myConn);
clientDeprovision.DeprovisionStore();
}
catch {}
}
解决方案

Hello all,

First i would like to point my first problem. Do i need to provision and deprovision the databases every time before start syncs?

If not with what way i can tell if there is need of provisioning or not!

I have created a class so i can manage provisioning and syncing between 2 SQL Express databases, but having difficulty with the exceptions i get.

OK here is the code.

    SqlConnection sourceConn = new SqlConnection(ConfigManager.Config.SourceSyncConnectionString);
    SqlConnection myConn = new SqlConnection(ConfigManager.Config.ConnectionString);
  
  private void InitializeSync()
    {
      #region SET SOURCE PROVIDER

      SqlSyncProvider sourceSqlProv = new SqlSyncProvider("MomSync", sourceConn);

      try
      {
        DbSyncScopeDescription sourceScope = new DbSyncScopeDescription("MomSync");

        DbSyncTableDescription productsSourceTableDesc = SqlSyncDescriptionBuilder.GetDescriptionForTable("Mom_Products", sourceConn);
        DbSyncTableDescription customersSourceTableDesc = SqlSyncDescriptionBuilder.GetDescriptionForTable("Mom_Customers", sourceConn);
        DbSyncTableDescription ordersSourceTableDesc = SqlSyncDescriptionBuilder.GetDescriptionForTable("Mom_Orders", sourceConn);
        DbSyncTableDescription paymentsSourceTableDesc = SqlSyncDescriptionBuilder.GetDescriptionForTable("Mom_Payments", sourceConn);

        sourceScope.Tables.Add(productsSourceTableDesc);
        sourceScope.Tables.Add(customersSourceTableDesc);
        sourceScope.Tables.Add(ordersSourceTableDesc);
        sourceScope.Tables.Add(paymentsSourceTableDesc);

        SqlSyncScopeProvisioning sourceProvision = new SqlSyncScopeProvisioning(sourceConn, sourceScope);
        sourceProvision.PopulateFromScopeDescription(sourceScope);
        sourceProvision.SetCreateTableDefault(DbSyncCreationOption.Skip);

        sourceProvision.Apply();
      }
      catch (Exception ex)
      {
        MessageBox.Show(ex.Message);
      }

      #endregion

      #region SET MY PROVIDER

      SqlSyncProvider myProvider = new SqlSyncProvider("MomClientSync", myConn);

      try
      {
        DbSyncScopeDescription scopeSourceDesc = SqlSyncDescriptionBuilder.GetDescriptionForScope("MomSync", sourceConn);
        SqlSyncScopeProvisioning clientProvision = new SqlSyncScopeProvisioning(myConn, scopeSourceDesc);
        clientProvision.PopulateFromScopeDescription(scopeSourceDesc);
        clientProvision.SetCreateTableDefault(DbSyncCreationOption.CreateOrUseExisting);

        clientProvision.Apply();
      }
      catch (Exception ex)
      {
        MessageBox.Show(ex.Message);
      }

      #endregion

      #region SET SYNC ORCHESTRATOR

      OrcheStrator = new SyncOrchestrator
                {
                  LocalProvider = myProvider,
                  RemoteProvider = sourceSqlProv,
                  Direction = SyncDirectionOrder.UploadAndDownload
                };

      ((SqlSyncProvider)OrcheStrator.LocalProvider).ApplyChangeFailed += ApplyChangeFailedHandler;

      #endregion
    }

    private void ApplyChangeFailedHandler(object sender, DbApplyChangeFailedEventArgs e)
    {
      LogErrors(e.Conflict.Type + " " + e.Error);
    }

    public void Synchronize()
    {
      SyncOperationStatistics syncStats = OrcheStrator.Synchronize();
    }

    private void DeProvision()
    {
      try
      {
        SqlSyncScopeDeprovisioning sourceDeprovision = new SqlSyncScopeDeprovisioning(sourceConn);
        sourceDeprovision.DeprovisionStore();

        SqlSyncScopeDeprovisioning clientDeprovision = new SqlSyncScopeDeprovisioning(myConn);
        clientDeprovision.DeprovisionStore();
      }
      catch {}
    }
解决方案


这篇关于同步Fx - SQL Express 2008< - > SQL Express 2008无法设置配置并继续syncin'的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!

10-31 13:28