Синхронизация всей локальной базы данных с SQL Azure

Я разрабатываю приложение для Windows, которое использует локальную базу данных. Я хочу добавить функцию для синхронизации всех локальных данных в SQL Azure.

В настоящее время я использовал следующий код. Это позволило мне успешно синхронизировать одну конкретную таблицу. Вот "Author_Master"

 string sqlazureConnectionString = "XXXX";
 string sqllocalConnectionString = "Server=localhost;Database=Enh_Branchwise_Master_Bookshop;Trusted_Connection=True";

        using (SqlConnection serverCon = new SqlConnection(sqlazureConnectionString))
        using (SqlConnection clientCon = new SqlConnection(sqllocalConnectionString))
        {
            var provider1 = new SqlSyncProvider("scope1", serverCon);
            var provider2 = new SqlSyncProvider("scope1", clientCon);

            prepareServer(provider1);
            prepareClinet(provider2, serverCon);
            SyncOrchestrator sync = new SyncOrchestrator();
            sync.LocalProvider = provider1;
            sync.RemoteProvider = provider2;

            sync.Synchronize();

        }

И следующие методы также.

 private static void prepareServer(SqlSyncProvider provider)
    {
        SqlConnection connection = (SqlConnection)provider.Connection;
        SqlSyncScopeProvisioning config = new SqlSyncScopeProvisioning(connection);

        if (!config.ScopeExists(provider.ScopeName))
        {
            DbSyncScopeDescription scopeDesc = new DbSyncScopeDescription(provider.ScopeName);
            scopeDesc.Tables.Add(SqlSyncDescriptionBuilder.GetDescriptionForTable("Author_Master", connection));
            config.PopulateFromScopeDescription(scopeDesc);
            config.SetCreateTableDefault(DbSyncCreationOption.CreateOrUseExisting);
            config.Apply();
        }
    }

    private static void prepareClinet(SqlSyncProvider provider, SqlConnection sourceConnection)
    {
        SqlConnection connection = (SqlConnection)provider.Connection;
        SqlSyncScopeProvisioning config = new SqlSyncScopeProvisioning(connection);

        if (!config.ScopeExists(provider.ScopeName))
        {
            DbSyncScopeDescription scopeDesc = new DbSyncScopeDescription(provider.ScopeName);
            scopeDesc.Tables.Add(SqlSyncDescriptionBuilder.GetDescriptionForTable("Author_Master", sourceConnection));
            config.PopulateFromScopeDescription(scopeDesc);
            config.Apply();
        }
    }

Мой вопрос: есть ли способ синхронизировать все таблицы в базе данных одновременно, не добавляя одну за другой таблицу.

Мои обе базы данных имеют одинаковую схему. Пожалуйста, дайте несколько предложений,

4 ответа

Решение
  Dim clientProvision As SqlSyncScopeProvisioning = New SqlSyncScopeProvisioning(clientCon, syncScope)


                            If Not (clientProvision.ScopeExists("Scope_" + tableName)) Then
                                clientProvision.Apply()
                            End If

                            Dim serverProvision As SqlSyncScopeProvisioning = New SqlSyncScopeProvisioning(serverCon, syncScope)

                            If Not (serverProvision.ScopeExists("Scope_" + tableName)) Then
                                serverProvision.Apply()
                            End If

                            Dim syncOrchestrator As New SyncOrchestrator()

                            ' Create provider for SQL Server
                            Dim clientProvider As New SqlSyncProvider("Scope_" + tableName, clientCon)

                            ' Set the command timeout and maximum transaction size for the SQL Azure provider.
                            Dim serverProvider As New SqlSyncProvider("Scope_" + tableName, serverCon)

                            ' Set Local provider of SyncOrchestrator to the onPremise provider
                            syncOrchestrator.LocalProvider = clientProvider

                            ' Set Remote provider of SyncOrchestrator to the azureProvider provider 
                            syncOrchestrator.RemoteProvider = serverProvider

                            ' Set the direction of SyncOrchestrator session to Upload and Download
                            syncOrchestrator.Direction = SyncDirectionOrder.UploadAndDownload


                            'Dim thread As New Threading.Thread(Sub() ShowStatistics(syncOrchestrator.Synchronize(), tableName))
                            'thread.Start()
                            ShowStatistics(syncOrchestrator.Synchronize(), tableName)

Вы можете использовать SQL Data Sync Tool.

Синхронизация данных SQL - это функция базы данных SQL Azure Windows.

С помощью синхронизации данных SQL вы можете синхронизировать выбранные данные через экземпляр базы данных SQL Azure Windows.

SQL Data Sync поддерживает синхронизацию внутри или между центрами обработки данных Windows Azure.

SQL Data Sync также поддерживает гибридные конфигурации экземпляров базы данных SQL и локальных баз данных SQL Server.

Служба синхронизации данных SQL бесплатна.

Более подробную информацию можно найти в блоге ScottGu в подразделе "Синхронизация данных SQL".

Я надеюсь, что это поможет вам.

Если вы используете Sync Framework, вы должны четко указать, какие таблицы (или даже столбцы) на самом деле синхронизировать.

Для этого вы можете использовать мастер миграции баз данных SQL (SQLAzure MW).

Это приложение с открытым исходным кодом.

Вы можете использовать его для переноса базы данных SQL в и из базы данных SQL Azure Windows.

В SQLAzure MW есть интерактивный пользовательский мастер, который проводит человека через процесс анализа / миграции.

Для получения более подробной информации о мастере миграции баз данных SQL

Я надеюсь, что это поможет вам.

Другие вопросы по тегам