上传和下载错误同步Sql Server和Sql Azure - Sync Framework

时间:2013-10-25 13:57:54

标签: sql upload download azure-sql-database microsoft-sync-framework

我正在尝试将SQL Server数据库与SQL Azure数据库同步(请耐心等待,因为我不完全了解Sync Framework)。这些是要求:

  • 首先:将1个表从Sql Azure同步到Sql Server
  • 第二步:将13个其他表(包括我在第一步中提到的表)从Sql Server同步到Azure。 我已经创建了一个控制台应用程序,这就是代码:

1.我用13个表创建一个范围:

DbSyncScopeDescription myScope = new DbSyncScopeDescription("alltablesyncgroup");
DbSyncTableDescription table = qlSyncDescriptionBuilder.GetDescriptionForTable("tablename", sqlServerConn);
myScope.Tables.Add(table); //repeated 13 times.

2.I提供两个数据库:

SqlSyncScopeProvisioning sqlAzureProv = new SqlSyncScopeProvisioning(sqlAzureConn,myScope);
if (!sqlAzureProv.ScopeExists("alltablesyncgroup"))
{
 sqlAzureProv.Apply();
}
SqlSyncScopeProvisioning sqlServerProv = new SqlSyncScopeProvisioning(sqlServerConn, myScope);
if (!sqlServerProv.ScopeExists("alltablesyncgroup"))
{
  sqlServerProv.Apply();          
}

3.我使用SyncDirectionOrder.Download创建SyncOrchestrator以同步firts表:

SqlConnection sqlServerConn = new SqlConnection(sqllocalConnectionString);
SqlConnection sqlAzureConn = new SqlConnection(sqlazureConnectionString);
SyncOrchestrator orch = new SyncOrchestrator
{
  RemoteProvider = new SqlSyncProvider(scopeName, sqlAzureConn),
  LocalProvider = new SqlSyncProvider(scopeName, sqlServerConn),
  Direction = SyncDirectionOrder.Download
};
orch.Synchronize();

4.后来,我使用相同的功能只改变方向SyncDirectionOrder.Upload来同步剩余的13个表

SqlConnection sqlServerConn = new SqlConnection(sqllocalConnectionString);
SqlConnection sqlAzureConn = new SqlConnection(sqlazureConnectionString);
SyncOrchestrator orch = new SyncOrchestrator
{
  RemoteProvider = new SqlSyncProvider(scopeName, sqlAzureConn),
  LocalProvider = new SqlSyncProvider(scopeName, sqlServerConn),
  Direction = SyncDirectionOrder.Upload
};
orch.Synchronize();

现在,这就是问题,显然我做错了因为当我下载时,syncStats显示已经应用了很多更改但是我看不到它反映在任何数据库上,当我尝试为了执行上传同步,它似乎进入循环,因为上传过程没有停止。

感谢!!!

1 个答案:

答案 0 :(得分:0)

首先,您提到您只想将Azure中的一个表同步到SQL Server,但是您要在范围内配置13个表。如果您想要一个表,只需使用一个表配置一个范围。 (例如,一个用于下载表的范围,一个用于上载的范围与其余表)

找出行不同步的原因,您可以订阅双方的ApplyChangeFailed事件,并检查是否遇到冲突或错误。

或者您可以在详细模式下启用Sync Framework跟踪,以便您可以看到下面发生的事情。