C# SQL更改跟踪和Microsoft同步框架
我对数据库和SQL有点陌生,我正在努力理解C# SQL更改跟踪和Microsoft同步框架,c#,sql-server,database,microsoft-sync-framework,change-tracking,C#,Sql Server,Database,Microsoft Sync Framework,Change Tracking,我对数据库和SQL有点陌生,我正在努力理解SQL更改跟踪和Microsoft Sync Framework是如何协同工作的 我找不到一些关于如何将数据库与Microsoft sync Framework同步的清晰示例,但希望我找到了网站,修改了代码,并在我的两个数据库上进行了同步,下面是我得到的代码: // Server connection using (SqlConnection serverConn = new SqlConnection(serverConnectionS
SQL更改跟踪
和Microsoft Sync Framework
是如何协同工作的
我找不到一些关于如何将数据库与Microsoft sync Framework
同步的清晰示例,但希望我找到了网站,修改了代码,并在我的两个数据库上进行了同步,下面是我得到的代码:
// 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#应用程序在发生变化时自动同步两个数据库,所以我找到了一种叫做变化跟踪的方法。我下载了示例代码,该代码提供了一个SynchronizationHelper
,它还可以在我的数据库中创建名为“{TableName}\u tracking”
的表。这是另一个跟踪更改的表,事实上,每当我更改数据库中的某些内容时,\u tracking
都会使用我更改、添加或删除的元素进行更新<代码>更改跟踪
不会自动同步我的数据库,它只是跟踪数据库中的更改,这是为了什么
对于第一个代码,同步工作,但不创建跟踪表,它是否只是同步表中的所有内容,而不管更改了什么?如果是这样的话,对于大型数据库,我应该使用更改跟踪
也许这是一件微不足道的事情,但我一直在谷歌搜索和测试大量代码,但我找不到明确的答案。安装Sync Framework时,它附带了一个帮助文件,其中包括几个同步数据库的演练。您提到的第一个链接和第二个链接使用相同的同步提供程序,它们都有跟踪表。同步框架支持使用内置的SQL更改跟踪功能,或使用同步框架自行创建的自定义功能(U跟踪) 同步框架位于数据库之外,您需要调用它才能启动同步。更改跟踪就是它所说的跟踪更改
如果希望数据库执行同步,则可能需要检查SQL复制。安装同步框架时,它附带一个帮助文件,其中包含多个同步数据库的演练。您提到的第一个链接和第二个链接使用相同的同步提供程序,它们都有跟踪表。同步框架支持使用内置的SQL更改跟踪功能,或使用同步框架自行创建的自定义功能(U跟踪) 同步框架位于数据库之外,您需要调用它才能启动同步。更改跟踪就是它所说的跟踪更改 如果希望数据库执行同步,则可能需要检查SQL复制