我正在尝试将 Sql Server 数据库与 SQL Azure 数据库同步(请耐心等待,因为我不完全了解 Sync Framework)。这些是要求:
- 第一:从Sql Azure同步1个表到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 以同步第一表:
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 显示已经应用了很多更改,但是我看不到它反映在任何数据库上,当我尝试执行上传同步它似乎进入了一个循环,因为上传过程没有停止。
谢谢!!!