【问题标题】:Microsoft Sync framework issueMicrosoft 同步框架问题
【发布时间】:2013-11-14 09:09:08
【问题描述】:

我一直在尝试使用 Microsoft Sync framework v2.1 来同步两个 MS SQL Server 数据库,但是只同步 35 个表大约需要 2 个小时,并且记录总数少于 500,000 条记录,根本不接受.

所以我是否遗漏了任何可以优化性能的方法,因为这只是一个测试数据,而生产数据要大得多。我还发现 MS Sync Framework 正在比较源跟踪表和目标跟踪表中的每条记录——基表中的每条记录在跟踪表中都有相应的记录——而更新和插入仅在两个数据库之一中完成。或者我应该把 Sync 框架扔掉并使用其他东西。

这是我用于配置和同步的代码。

感谢任何帮助。

提前致谢。

public void Initialize(string SourceConnStr, string DestConnStr)
    {
        SqlConnection src = null;
        SqlConnection dest = null;
        try
        {
            src = new SqlConnection(SourceConnStr);
            dest = new SqlConnection(DestConnStr);
            DbSyncScopeDescription scope = new DbSyncScopeDescription("SyncScopeDB");
            foreach (string tableName in tablesNames)
            {
                DbSyncTableDescription table = SqlSyncDescriptionBuilder.GetDescriptionForTable(tableName, dest);
                scope.Tables.Add(table);
            }
            SqlSyncScopeProvisioning srcProv = new SqlSyncScopeProvisioning(src, scope);
            srcProv.ObjectSchema = "SyncDB1";
            srcProv.Apply();

            SqlSyncScopeProvisioning destProv = new SqlSyncScopeProvisioning(dest, scope);
            destProv.ObjectSchema = "SyncDB2";
            destProv.Apply();
        }
        catch (Exception ex) { Console.Write(ex.Message); }
    }

public string Sync(string SourceConnStr, string DestConnStr)
    {
        SqlConnection src = null;
        SqlConnection dest = null;
        SampleSyncOrchestrator Orch = null;
        try
        {
            src = new SqlConnection(SourceConnStr);
            dest = new SqlConnection(DestConnStr);

            Orch = new SampleSyncOrchestrator(
                new SqlSyncProvider("SyncScopeDB", src, null, "SyncDB1"),
                new SqlSyncProvider("SyncScopeDB", dest, null, "SyncDB2"));
            var syncStats = Orch.Synchronize();
            Console.Write(syncStats.ToString());
        }
        catch (Exception ex) { return ex.Message; }
        return "Success";
    }

public class SampleSyncOrchestrator : SyncOrchestrator
{
    public SampleSyncOrchestrator(RelationalSyncProvider local, RelationalSyncProvider remote)
    {
        this.LocalProvider = local;
        this.RemoteProvider = remote;
        this.Direction = SyncDirectionOrder.Upload;
    }
}

【问题讨论】:

    标签: .net sql-server microsoft-sync-framework database-replication transactional-replication


    【解决方案1】:

    所涉及的数据库是否已经包含数据?

    不,Sync Fx 不会比较源行和目标行。 _tracking 表用于跟踪更改。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2010-10-22
      • 2014-02-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-09-21
      • 1970-01-01
      • 2010-12-09
      相关资源
      最近更新 更多