private void ExecutaMigracao() { ReorganizarIndicesHabilitado = MigracaoNaoIniciada = false; LogaMensagem?.Invoke("Iniciando migração"); Stopwatch stopwatch; using (var conexaoFonte = new FbConnection(ConnectionStringFonte)) using (var conexaoDestino = new SqlConnection(ConnectionStringDestino)) { conexaoFonte.Open(); conexaoDestino.Open(); migrador = new Migrador(new ExtratorMetadadosTabelaFirebird(conexaoFonte), new ExtratorMetadadosTabelaMsSqlServer(conexaoDestino)); migrador.OnMessage += LogaMensagem; migrador.OnError += message => LogaMensagem?.Invoke($"Erro na migração da tabela {TabelaEmMigracao}: {message}"); migrador.OnIniciarMigracao += totalTabelas => TotalTabelas = totalTabelas; migrador.OnInicioMigracaoTabela += Migrador_OnInicioMigracaoTabela; migrador.OnFimMigracaoTabela += Migrador_OnFimMigracaoTabela; migrador.OnRegistrosMigrados += Migrador_OnRegistrosMigrados; stopwatch = Stopwatch.StartNew(); Task.Factory.StartNew(() => AtualizaTempoDecorrido(stopwatch), _cancellationTokenSource.Token, TaskCreationOptions.LongRunning, TaskScheduler.Current); migrador.Migrar(conexaoFonte, conexaoDestino); stopwatch.Stop(); } LogaMensagem?.Invoke($"Migração realizada em {stopwatch.Elapsed}"); _cancellationTokenSource.Cancel(); ReorganizarIndicesHabilitado = true; }
private static void Main(string[] args) { var sourceConString = new FbConnectionStringBuilder { DataSource = @"localhost", Database = @"C:\temp\CARGAS32_BOMFIM.FDB", Password = "******", UserID = "SYSDBA" }; var destConString = new SqlConnectionStringBuilder { InitialCatalog = "CARGAS32", DataSource = ".", IntegratedSecurity = true }; Stopwatch stopwatch; using (var conexaoFonte = new FbConnection(sourceConString.ConnectionString)) using (var conexaoDestino = new SqlConnection(destConString.ConnectionString)) { var extratorMetadadosTabelaMsSqlServer = new ExtratorMetadadosTabelaMsSqlServer(conexaoDestino); var extratorMetadadosTabelaFirebird = new ExtratorMetadadosTabelaFirebird(conexaoFonte); conexaoFonte.Open(); conexaoDestino.Open(); stopwatch = Stopwatch.StartNew(); var migrador = new Migrador(extratorMetadadosTabelaFirebird, extratorMetadadosTabelaMsSqlServer); migrador.Migrar(conexaoFonte, conexaoDestino); migrador.OnMessage += Console.WriteLine; migrador.OnError += Migrador_OnError; migrador.OnIniciarMigracao += Migrador_OnIniciarMigracao; migrador.OnInicioMigracaoTabela += Migrador_OnInicioMigracaoTabela; migrador.OnFimMigracaoTabela += Migrador_OnFimMigracaoTabela; migrador.OnRegistrosMigrados += Migrador_OnRegistrosMigrados; stopwatch.Stop(); } Console.WriteLine($"Cópia realizada em {stopwatch.Elapsed}"); Console.ReadLine(); }