2013-08-21 63 views
0

我有一个数据库,我们希望将数据部分同步到另一个数据库(在Azure上)。在不改变源数据库模式的情况下单向同步数据

我一直在寻找同步框架2.1,并认为它可以解决这个问题,但我不能从联机文档中弄明白。

我们有克制,我们不能改变数据库的模式,但是我们使用SQL 2008 R2,这意味着我们可以使用跟踪更改。

我在寻找一些关于如何实现这一点的建议。

目前,我有一个SyncOrchestrator

 var orch = new SyncOrchestrator 
     { 
      LocalProvider = new SampleServerSyncProvider(), 
      RemoteProvider = new SampleClientSymcProvider(), 
      Direction = SyncDirectionOrder.Upload 
     }; 

然后同步提供

public class SampleServerSyncProvider : DbServerSyncProvider 
{ 
    private String SQLLocalConnection = "valid connection string"; 
    public SampleServerSyncProvider() 
    {    
     SqlConnection serverConn = new SqlConnection(SQLLocalConnection); 
     Connection = serverConn; 
     Connection.Open(); 
     var cmTableSyncAdapter = new SqlSyncAdapterBuilder 
     { 
      Connection = serverConn, 
      ChangeTrackingType = ChangeTrackingType.SqlServerChangeTracking, 
      SyncDirection = SyncDirection.Bidirectional, 
      TableName = "my table" 
     };     
     SyncAdapters.Add(cmTableSyncAdapter.ToSyncAdapter()); 
    } 
} 

目前我得到的是谈论初始化连接的错误。但我无法找到任何对象

System.InvalidOperationException的初始化方法:无法通过使用 SqlSyncAdapterBuilder创建表“我的表”一SyncAdapter因为与服务器的连接尚未 被初始化。您调用任何SqlSyncAdapterBuilder的 方法

回答

1

SQL更改跟踪仅支持较老的离线提供商之前,初始化 SqlSyncAdapterBuilder的连接属性(SqlClientSyncProvider/DbServerSyncProvider/SyncAgent)。您尝试使用的较新提供程序(SqlSyncProvider/SyncOrchestrator)需要定制更改跟踪。您不能混合和匹配数据库同步提供程序。

你看过使用SSIS吗?

相关问题