0

我是一種新的數據庫和SQL,我很努力想要了解如何SQL Change TrackingMicrosoft Sync Framework一起工作。SQL變更跟蹤和微軟同步框架

我找不到任何有關如何同步的數據庫與Microsoft Sync Framework但我希望我找到this網站,修改了代碼,並得到了同步的工作對我的兩個數據庫的一些明顯的例子,這裏是我的代碼:

// Server connection 
    using (SqlConnection serverConn = new SqlConnection(serverConnectionString)) 
    { 
     if (serverConn.State == ConnectionState.Closed) 
      serverConn.Open(); 

     // Client connection 
     using (SqlConnection clientConn = new SqlConnection(clientConnectionString)) 
     { 
      if (clientConn.State == ConnectionState.Closed) 
       clientConn.Open(); 

      const string scopeName = "DifferentPKScope"; 

      // Provision Server 
      var serverProvision = new SqlSyncScopeProvisioning(serverConn); 
      if (!serverProvision.ScopeExists(scopeName)) 
      { 
       var serverScopeDesc = new DbSyncScopeDescription(scopeName); 
       var serverTableDesc = SqlSyncDescriptionBuilder.GetDescriptionForTable(table, serverConn); 

       // Add the table to the descriptor 
       serverScopeDesc.Tables.Add(serverTableDesc); 

       serverProvision.PopulateFromScopeDescription(serverScopeDesc); 
       serverProvision.Apply(); 
      } 

      // Provision Client 
      var clientProvision = new SqlSyncScopeProvisioning(clientConn); 
      if (!clientProvision.ScopeExists(scopeName)) 
      { 
       var clientScopeDesc = new DbSyncScopeDescription(scopeName); 
       var clientTableDesc = SqlSyncDescriptionBuilder.GetDescriptionForTable(table, clientConn); 

       // Add the table to the descriptor 
       clientScopeDesc.Tables.Add(clientTableDesc); 

       clientProvision.PopulateFromScopeDescription(clientScopeDesc); 
       clientProvision.SetCreateTrackingTableDefault(DbSyncCreationOption.CreateOrUseExisting); 
       clientProvision.Apply(); 
      } 

      // Create the sync orchestrator 
      var syncOrchestrator = new SyncOrchestrator(); 

      // Setup providers 
      var localProvider = new SqlSyncProvider(scopeName, clientConn); 
      var remoteProvider = new SqlSyncProvider(scopeName, serverConn); 

      syncOrchestrator.LocalProvider = localProvider; 
      syncOrchestrator.RemoteProvider = remoteProvider; 

      // Set the direction of sync session 
      syncOrchestrator.Direction = direction; 

      // Execute the synchronization process 
      return syncOrchestrator.Synchronize(); 
     } 
    } 

所以在這種方式下,我的兩個數據庫之間的任何更改都是同步的。但是我想讓我的C#應用​​程序能夠在發生某些變化時自動同步兩個數據庫,因此我找到了一些名爲Change Trackinghere的東西。我下載了示例代碼,該代碼提供了一個SynchronizationHelper,該代碼還在我的數據庫中創建了名爲"{TableName}_tracking"的表。這是跟蹤更改的另一個表格,實際上它的確如此,每當我更改數據庫中的某些內容時,_tracking會更新爲已更改,添加或刪除的元素。 Change Tracking不會自動同步我的數據庫,它只是跟蹤他們的變化,這是什麼目的?

使用第一個代碼,同步工作,但沒有創建_tracking表,它是否只是同步表中的所有內容,而不管它發生了什麼變化?如果是這樣的話,對於大型數據庫,我應該使用Change Tracking

也許這是微不足道的,但我一直在使用谷歌搜索和測試很多代碼,但我找不到明確的答案。

回答

0

當您安裝Sync Framework時,它附帶一個幫助文件,其中包含幾個同步數據庫的演練。您提到的第一個鏈接,第二個鏈接使用相同的同步提供程序,它們都有跟蹤表。 Sync Framework支持使用內置的SQL更改跟蹤功能或使用Sync Framework自行創建的自定義一項(_tracking)。

Sync Framework位於數據庫之外,您需要調用它才能觸發同步。更改跟蹤就是它所說的 - 跟蹤更改。

如果您希望數據庫執行同步,則可能需要檢查SQL複製。