2

ローカルデータベースを使用しているWindowsアプリケーションを開発しています。すべてのローカルデータをSQLAzureに同期する関数を追加したいと思います。

現在、以下のコードを使用しています。これにより、特定の1つのテーブルを正常に同期できました。これが「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();
        }
    }

私の質問:テーブルを1つずつ追加せずに、データベース内のすべてのテーブルを一度に同期する方法はありますか。

私の両方のデータベースは同じスキーマを持っています。いくつかの提案をしてください、

4

4 に答える 4

2

SQLデータ同期ツールを使用できます。

SQL Data Syncは、WindowsAzureSQLデータベースの機能です。

SQL Data Syncを使用すると、選択したデータをWindowsAzureSQLデータベースインスタンスを介して同期できます。

SQL Data Syncは、WindowsAzureデータセンター内またはWindowsAzureデータセンター間の同期をサポートします。

SQL Data Syncは、SQLデータベースインスタンスとオンプレミスSQLServerデータベースのハイブリッド構成もサポートします。

SQLデータ同期サービスは無料です。

詳細については、ScottGuのブログ投稿「SQLDataSync」サブトピックを確認してください。

これがお役に立てば幸いです。

于 2012-12-26T14:28:32.763 に答える
1

Sync Frameworkを使用している場合は、実際に同期するテーブル(または列)を明示的に指定する必要があります。

于 2012-12-26T11:41:00.127 に答える
0
  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)
于 2014-01-06T17:03:39.413 に答える
-1

そのためにSQLデータベース移行ウィザード(SQLAzureMW)を使用できます。

オープンソースアプリケーションです。

これを使用して、SQLデータベースをWindowsAzureSQLデータベースとの間で移行できます。

SQLAzureMWには、分析/移行プロセスをガイドするユーザーインタラクティブウィザードがあります。

SQLデータベース移行ウィザードの詳細については

これがお役に立てば幸いです。

于 2012-12-25T18:25:43.613 に答える