我是一種新的數據庫和SQL,我很努力想要了解如何SQL Change Tracking
和Microsoft 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 Tracking
here的東西。我下載了示例代碼,該代碼提供了一個SynchronizationHelper
,該代碼還在我的數據庫中創建了名爲"{TableName}_tracking"
的表。這是跟蹤更改的另一個表格,實際上它的確如此,每當我更改數據庫中的某些內容時,_tracking
會更新爲已更改,添加或刪除的元素。 Change Tracking
不會自動同步我的數據庫,它只是跟蹤他們的變化,這是什麼目的?
使用第一個代碼,同步工作,但沒有創建_tracking
表,它是否只是同步表中的所有內容,而不管它發生了什麼變化?如果是這樣的話,對於大型數據庫,我應該使用Change Tracking
?
也許這是微不足道的,但我一直在使用谷歌搜索和測試很多代碼,但我找不到明確的答案。