public bool Sync(Guid clientId, string clientConnectionString)
        {
            try
            {
                string serverConnectionString = ConfigurationSettings.AppSettings["ServerConnectionString"].ToString();

                string scopeName = "ClientScope-" + clientId;

                SqlSyncProvider serverProvider = synchronizationHelper.ConfigureSqlSyncProvider(scopeName, serverConnectionString, clientId);

                SqlSyncProvider destinationProvider = new SqlSyncProvider();

                SqlConnection cn = new SqlConnection();
                cn.ConnectionString = clientConnectionString;

                destinationProvider.Connection = cn;
                destinationProvider.ScopeName  = scopeName;

                SqlSyncProvider destinationProxy = new SqlSyncProvider(
                    scopeName, ((SqlConnection)destinationProvider.Connection));

                serverProvider.MemoryDataCacheSize = 100000;

                if (!string.IsNullOrEmpty(this.batchSpoolLocation))
                {
                    serverProvider.BatchingDirectory   = this.batchSpoolLocation;
                    destinationProxy.BatchingDirectory = this.batchSpoolLocation;
                }

                SyncOperationStatistics statistics = synchronizationHelper.SynchronizeProviders(scopeName, clientConnectionString, serverConnectionString, serverProvider, destinationProxy);

                TimeSpan diff = statistics.SyncEndTime.Subtract(statistics.SyncStartTime);

                destinationProxy.Dispose();

                this.syncStats = string.Format("Batching: {4} - Total Time To Synchronize = {0}:{1}:{2}:{3}",
                                               diff.Hours, diff.Minutes, diff.Seconds, diff.Milliseconds, (this._batchSize > 0) ? "Enabled" : "Disabled");

                return(true);
            }
            catch (FaultException ex)
            {
                return(false);
            }
        }
Exemplo n.º 2
0
        public void Initialize(string scopeName)
        {
            var helper = new ServerSynchronizationHelper();

            sqlProvider = helper.ConfigureSqlSyncProvider(scopeName);
            sqlProvider.ApplicationTransactionSize              = 100000;
            sqlProvider.MemoryDataCacheSize                     = 4096;
            sqlProvider.ApplyingChanges                        += Program_RemoteItemChanging;
            sqlProvider.ChangesApplied                         += Program_ChangesApplied;
            sqlProvider.ApplyChangeFailed                      += Program_ChangeApplyFail;
            sqlProvider.ApplyMetadataFailed                    += Program_ApplyMetadataFail;
            sqlProvider.DestinationCallbacks.ItemConflicting   += Program_ItemConflicting;
            sqlProvider.DestinationCallbacks.ItemChangeSkipped += Program_ItemChangeSkipped;

            // This is only for custom implemented providers...
            // sqlProvider.Configuration.CollisionConflictResolutionPolicy = CollisionConflictResolutionPolicy.ApplicationDefined;
            // sqlProvider.Configuration.ConflictResolutionPolicy = ConflictResolutionPolicy.ApplicationDefined;

            batchIdToFileMapper = new Dictionary <string, string>();
        }