本文介绍了同步Fx - SQL Express 2008< - > SQL Express 2008无法设置配置并继续syncin'的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
大家好,
首先,我想指出我的第一个问题。我是否需要在开始同步之前每次都配置和取消配置数据库?
如果没有我能告诉你是否需要配置的话?
我创建了一个类,所以我可以管理2个SQL Express数据库之间的配置和同步,但是我遇到的例外有困难。
这里的代码是OK。
SqlConnection sourceConn = new SqlConnection(ConfigManager.Config.SourceSyncConnectionString);
SqlConnection myConn = new SqlConnection(ConfigManager.Config.ConnectionString);
private void InitializeSync()
{
#region SET SOURCE PROVIDER
SqlSyncProvider sourceSqlProv = new SqlSyncProvider (" MomSync" ,sourceConn);
尝试
{
DbSyncScopeDescription sourceScope = new DbSyncScopeDescription(" MomSync" );
DbSyncTableDescription productsSourceTableDesc = SqlSyncDescriptionBuilder.GetDescriptionForTable(" Mom_Products" ,sourceConn);
DbSyncTableDescription customersSourceTableDesc = SqlSyncDescriptionBuilder.GetDescriptionForTable(" Mom_Customers" ,sourceConn);
DbSyncTableDescription ordersSourceTableDesc = SqlSyncDescriptionBuilder.GetDescriptionForTable(" Mom_Orders" ,sourceConn);
DbSyncTableDescription paymentsSourceTableDesc = SqlSyncDescriptionBuilder.GetDescriptionForTable(" Mom_Payments" ,sourceConn);
sourceScope.Tables.Add(productsSourceTableDesc);
sourceScope.Tables.Add(customersSourceTableDesc);
sourceScope.Tables.Add(ordersSourceTableDesc);
sourceScope.Tables.Add(paymentsSourceTableDesc);
SqlSyncScopeProvisioning sourceProvision = new SqlSyncScopeProvisioning(sourceConn,sourceScope);
sourceProvision.PopulateFromScopeDescription(sourceScope);
sourceProvision.SetCreateTableDefault(DbSyncCreationOption.Skip);
sourceProvision.Apply();
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
#endregion
#区域 SET MY PROVIDER
SqlSyncProvider myProvider = new SqlSyncProvider(" ; MomClientSync" ,myConn);
尝试
{
DbSyncScopeDescription scopeSourceDesc = SqlSyncDescriptionBuilder.GetDescriptionForScope( MomSync" ,sourceConn);
SqlSyncScopeProvisioning clientProvision = new SqlSyncScopeProvisioning(myConn,scopeSourceDesc);
clientProvision.PopulateFromScopeDescription(scopeSourceDesc);
clientProvision.SetCreateTableDefault(DbSyncCreationOption.CreateOrUseExisting);
clientProvision.Apply();
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
#endregion
# region SET SYNC ORCHESTRATOR
OrcheStrator = new SyncOrchestrator
{
LocalProvider = myProvider,
RemoteProvider = sourceSqlProv,
Direction = SyncDirectionOrder.UploadAndDownload
};
((SqlSyncProvider)OrcheStrator.LocalProvider)。ApplicationChangeFailed + = ApplyChangeFailedHandler;
#endregion
}
私人 void ApplyChangeFailedHandler( object sender,DbApplyChangeFailedEventArgs e)
{
LogErrors(e.Conflict.Type + "" + e.Error);
}
public void Synchronize()
{
SyncOperationStatistics syncStats = OrcheStrator.Synchronize();
}
private void DeProvision()
{
尝试
{
SqlSyncScopeDeprovisioning sourceDeprovision = new SqlSyncScopeDeprovisioning(sourceConn);
sourceDeprovision.DeprovisionStore();
SqlSyncScopeDeprovisioning clientDeprovision = new SqlSyncScopeDeprovisioning(myConn);
clientDeprovision.DeprovisionStore();
}
catch {}
}
解决方案
Hello all,
First i would like to point my first problem. Do i need to provision and deprovision the databases every time before start syncs?
If not with what way i can tell if there is need of provisioning or not!
I have created a class so i can manage provisioning and syncing between 2 SQL Express databases, but having difficulty with the exceptions i get.
OK here is the code.
SqlConnection sourceConn = new SqlConnection(ConfigManager.Config.SourceSyncConnectionString); SqlConnection myConn = new SqlConnection(ConfigManager.Config.ConnectionString); private void InitializeSync() { #region SET SOURCE PROVIDER SqlSyncProvider sourceSqlProv = new SqlSyncProvider("MomSync", sourceConn); try { DbSyncScopeDescription sourceScope = new DbSyncScopeDescription("MomSync"); DbSyncTableDescription productsSourceTableDesc = SqlSyncDescriptionBuilder.GetDescriptionForTable("Mom_Products", sourceConn); DbSyncTableDescription customersSourceTableDesc = SqlSyncDescriptionBuilder.GetDescriptionForTable("Mom_Customers", sourceConn); DbSyncTableDescription ordersSourceTableDesc = SqlSyncDescriptionBuilder.GetDescriptionForTable("Mom_Orders", sourceConn); DbSyncTableDescription paymentsSourceTableDesc = SqlSyncDescriptionBuilder.GetDescriptionForTable("Mom_Payments", sourceConn); sourceScope.Tables.Add(productsSourceTableDesc); sourceScope.Tables.Add(customersSourceTableDesc); sourceScope.Tables.Add(ordersSourceTableDesc); sourceScope.Tables.Add(paymentsSourceTableDesc); SqlSyncScopeProvisioning sourceProvision = new SqlSyncScopeProvisioning(sourceConn, sourceScope); sourceProvision.PopulateFromScopeDescription(sourceScope); sourceProvision.SetCreateTableDefault(DbSyncCreationOption.Skip); sourceProvision.Apply(); } catch (Exception ex) { MessageBox.Show(ex.Message); } #endregion #region SET MY PROVIDER SqlSyncProvider myProvider = new SqlSyncProvider("MomClientSync", myConn); try { DbSyncScopeDescription scopeSourceDesc = SqlSyncDescriptionBuilder.GetDescriptionForScope("MomSync", sourceConn); SqlSyncScopeProvisioning clientProvision = new SqlSyncScopeProvisioning(myConn, scopeSourceDesc); clientProvision.PopulateFromScopeDescription(scopeSourceDesc); clientProvision.SetCreateTableDefault(DbSyncCreationOption.CreateOrUseExisting); clientProvision.Apply(); } catch (Exception ex) { MessageBox.Show(ex.Message); } #endregion #region SET SYNC ORCHESTRATOR OrcheStrator = new SyncOrchestrator { LocalProvider = myProvider, RemoteProvider = sourceSqlProv, Direction = SyncDirectionOrder.UploadAndDownload }; ((SqlSyncProvider)OrcheStrator.LocalProvider).ApplyChangeFailed += ApplyChangeFailedHandler; #endregion } private void ApplyChangeFailedHandler(object sender, DbApplyChangeFailedEventArgs e) { LogErrors(e.Conflict.Type + " " + e.Error); } public void Synchronize() { SyncOperationStatistics syncStats = OrcheStrator.Synchronize(); } private void DeProvision() { try { SqlSyncScopeDeprovisioning sourceDeprovision = new SqlSyncScopeDeprovisioning(sourceConn); sourceDeprovision.DeprovisionStore(); SqlSyncScopeDeprovisioning clientDeprovision = new SqlSyncScopeDeprovisioning(myConn); clientDeprovision.DeprovisionStore(); } catch {} }
解决方案
这篇关于同步Fx - SQL Express 2008< - > SQL Express 2008无法设置配置并继续syncin'的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!
10-31 13:28