internal void AtualizarDadosDestino(string destinationSchema, string destinationTable, string columnPK, bool pkIdentity, DataTable colunasDestino, DataTable dados)
        {
            var time           = new System.Diagnostics.Stopwatch();
            var tempGuid       = "##" + Guid.NewGuid().ToString().Replace("-", "");
            var listTypeString = new List <String>()
            {
                "nvarchar", "varchar", "varbinary"
            };

            _connection = validaConexao(_connection);
            var command     = _connection.CreateCommand();
            var camposTable = string.Join(", ", colunasDestino.AsEnumerable().Select(s => s["COLUMN_NAME"] + " " + (s["DATA_TYPE"].ToString() == "decimal" ? "money" : s["DATA_TYPE"]) + $"{(listTypeString.Any(x => x == s["DATA_TYPE"].ToString()) ? "(max)" : string.Empty)}").ToList());

            var queryTempTable = $@"
CREATE TABLE {tempGuid}(
{camposTable}
)
";

            Program.AtualizarStatus(server, $"Criando tabela Temporaria {tempGuid}", null);
            time.Start();
            command.CommandText    = queryTempTable;
            command.CommandTimeout = 0;
            command.ExecuteNonQuery();
            time.Stop();
            Program.AtualizarStatus(server, $"tabela Temporaria {tempGuid} criada", time.Elapsed);
            time = new System.Diagnostics.Stopwatch();
            Program.AtualizarStatus(server, $"Inserindo dados na tabela {tempGuid}, qtd de registro {dados.Rows.Count}", null);
            time.Start();

            _connectionFactory.BulkCopy(tempGuid, dados);

            time.Stop();
            Program.AtualizarStatus(server, $"Dados inserido na tabela {tempGuid}", time.Elapsed);
            time = new System.Diagnostics.Stopwatch();

            Program.AtualizarStatus(server, $"Iniciando os insert e update na tabela  {destinationSchema}.{destinationTable}", null);
            time.Start();
            var queryMerge = Query.GenerateMerge(tempGuid, destinationSchema, destinationTable, columnPK, colunasDestino);

            _connection            = validaConexao(_connection);
            command                = _connection.CreateCommand();
            command.CommandText    = queryMerge;
            command.CommandTimeout = 0;
            command.ExecuteNonQuery();
            time.Stop();
            Program.AtualizarStatus(server, $"Atualização finalizada", time.Elapsed);
            time = new System.Diagnostics.Stopwatch();
        }