C# SQL更改跟踪和Microsoft同步框架

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有点陌生,我正在努力理解
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复制