我正在开发一个使用本地数据库的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();
}
}
我的问题:有没有办法同时同步数据库中的所有表,而无需逐个添加表。
我的两个数据库都有相同的架构。 请提出一些建议,
答案 0 :(得分:2)
您可以使用 SQL数据同步工具。
SQL Data Sync是Windows Azure SQL数据库的一项功能。
使用SQL Data Sync,您可以通过Windows Azure SQL数据库实例同步所选数据。
SQL Data Sync支持Windows Azure数据中心内或跨Windows Azure数据中心的同步。
SQL Data Sync还支持SQL数据库实例和本地SQL Server数据库的混合配置。
SQL数据同步服务是免费的。
有关详细信息,请在“SQL数据同步”子主题下查看ScottGu's Blog Post。
我希望这会对你有所帮助。
答案 1 :(得分:1)
如果您使用的是Sync Framework,则必须明确告诉它实际同步哪些表(甚至列)。
答案 2 :(得分: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)
答案 3 :(得分:-1)
您可以使用 SQL数据库迁移向导(SQLAzureMW)。
这是一个开源应用程序。
您可以使用它将SQL数据库迁移到Windows Azure SQL数据库或从Windows Azure SQL数据库迁移。
SQLAzureMW有一个用户交互式向导,可以引导人们完成分析/迁移过程。
了解有关SQL Database Migration Wizard
的更多详情我希望这会对你有所帮助。