0

我想與SQL Azure數據庫同步Sql Server數據庫(請耐心等待,因爲我不完全瞭解同步框架)。這些是要求:上傳和下載錯誤同步Sql服務器和Sql Azure - 同步框架

  • 第一:從SQL天青同步1和表到SQL Server
  • 第二:同步其它13個表(包括我在第一步驟中提到的表)從SQL Server天青。 我創建了一個控制檯應用程序,這是代碼:

1.I創建一個範圍與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.I創建SyncOrchestrator與SyncDirectionOrder.Download同步的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.Later,我用的是同樣的功能只改變方向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顯示已經應用了很多改變,但是我看不到它反映在任何數據庫上,當我嘗試執行上傳同步時,它似乎進入循環,因爲上傳過程沒有停止。

謝謝!

回答

0

首先,您提到您只想將Azure中的一個表同步到您的SQL Server,但您要在範圍內配置13個表。如果你想要一個表格,只需要爲一個表格提供一個範圍。 (例如,一個範圍用於下載表格,一個範圍用於與其餘表格一起上傳)

要找出行不同步的原因,您可以訂閱兩邊的ApplyChangeFailed事件,並檢查是否存在遇到衝突或錯誤。

或者您可以在詳細模式下啓用Sync Framework跟蹤,以便您可以看到底下發生了什麼。