예제 #1
0
        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;
        }
예제 #2
0
        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();
        }