单向同步数据而不更改源数据库的模式

时间:2013-08-21 00:02:44

标签: sql sql-server microsoft-sync-framework

我有一个数据库,我们希望将数据部分同步到另一个数据库(在Azure上)。

我一直在关注 Sync Framework 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:无法使用表格为“我的表”创建SyncAdapter   SqlSyncAdapterBuilder因为与服务器的连接还没有   已初始化。初始化的Connection属性   在调用任何SqlSyncAdapterBuilder之前,SqlSyncAdapterBuilder   方法

1 个答案:

答案 0 :(得分:1)

仅在较旧的脱机提供程序(SqlClientSyncProvider / DbServerSyncProvider / SyncAgent)上支持SQL更改跟踪。您尝试使用的较新提供程序(SqlSyncProvider / SyncOrchestrator)需要自定义更改跟踪。您无法混合和匹配数据库同步提供程序。

您是否考虑过使用SSIS?