public static void gravaLogAzure() { SqlConnectionStringBuilder builder = new SqlConnectionStringBuilder(); //string arqLog = @"C:\Users\Ivan\Documents\FRIGOBOM DADOS.FDB\LOG.sql"; string arqLog = CaminhoDadosXML(caminho) + @"Dados\LOG.sql"; var prodx = from p in XElement.Load((CaminhoDadosXML(caminho) + @"Dados\Conexoes.xml")).Elements("Conexao") where p.Element("tipo").Value == "azure" select new { servidor = p.Element("servidor").Value, usuario = p.Element("usuario").Value, senha = p.Element("senha").Value, banco = p.Element("banco").Value, }; // Executa a consulta foreach (var produto in prodx) { string cipherText = produto.senha.Trim(); string decryptedText = CryptorEngine.Decrypt(cipherText, true); builder.DataSource = produto.servidor; builder.UserID = produto.usuario; builder.Password = decryptedText; //builder.Password = produto.senha; builder.InitialCatalog = produto.banco; builder.ConnectTimeout = 60; } //limpa memória prodx = null; using (SqlConnection connection = new SqlConnection(builder.ConnectionString)) { try { connection.Open(); StreamReader texto = new StreamReader(arqLog); // textBox3.Text = texto.ReadToEnd(); string oLogSql = ""; string s = texto.ReadToEnd(); int i = 0; string sql = @"INSERT INTO [dbo].[vendas_frigobom_log] ([F_log]) VALUES "; string[] words = Regex.Split(s, "\r\n"); foreach (string Linha in words) { if (i == 0) { oLogSql += sql + "('" + Linha.Replace("'", "|") + "')"; i++; } else if (i == 999) { oLogSql += ",('" + Linha.Replace("'", "|") + "')"; i = 0; } else { oLogSql += ",('" + Linha.Replace("'", "|") + "')"; i++; } } ///fecho e deleto o arquivo. texto.Close(); if (File.Exists(arqLog)) { File.Delete(arqLog); } //exporto dados. SqlCommand command = new SqlCommand(oLogSql, connection); command.CommandTimeout = 60; command.ExecuteNonQuery(); connection.Close(); //log.WriteEntry(watch.Elapsed + " | Exportação para o cloud concluida " + "\r\n"); sql = null; oLogSql = null; s = null; words = null; arqLog = null; } catch (Exception ex) { //log.WriteEntry(ex); string oLog = " Erro Exportar Log no Azure linha 160 " + ex.Message + "\r\n"; Global.gravaLog(oLog); } } }
public void atualizar_azure() { Global.Login = "******"; string texto2 = " Começando os Trabalhos!! "; if (this.label1.InvokeRequired) { SetTextCallback d = new SetTextCallback(DefinirTexto); this.Invoke(d, new object[] { texto2 }); } else { this.label1.Text = texto2; } //string caminho; string firebird_ds = ""; string firebird_db = ""; string firebird_user = ""; string firebird_pass = ""; string arqLog = CaminhoDadosXML(caminho) + @"Dados\LOG.sql"; // string arqLog = @"C:\Users\Ivan\Documents\FRIGOBOM DADOS.FDB\LOG.sql"; string nomeArquivo = CaminhoDadosXML(caminho) + @"Dados\" + DateTime.Now.ToString("yyyyMMddHHmmss") + ".sql"; //string nomeArquivo = @"C:\Users\Ivan\Documents\FRIGOBOM DADOS.FDB\" + DateTime.Now.ToString("yyyyMMddHHmmss") + ".sql"; String oLog = ">>> run " + DateTime.Now.ToString("dd'/'MM'/'yyyy HH:mm:ss") + "\r\n" + "Summary \r\n"; caminho = AppDomain.CurrentDomain.BaseDirectory; // adicionar um try caso o arquivo não exista var prods = from p in XElement.Load((CaminhoDadosXML(caminho) + @"Dados\Conexoes.xml")).Elements("Conexao") where p.Element("tipo").Value == "fb" select new { servidor = p.Element("servidor").Value, usuario = p.Element("usuario").Value, senha = p.Element("senha").Value, banco = p.Element("banco").Value, }; // Executa a consulta foreach (var produto in prods) { firebird_ds = produto.servidor; firebird_db = produto.banco; firebird_user = produto.usuario; firebird_pass = produto.senha; } texto2 = " Testado Conexão!! "; if (this.label1.InvokeRequired) { SetTextCallback d = new SetTextCallback(DefinirTexto); this.Invoke(d, new object[] { texto2 }); } else { this.label1.Text = texto2; } if (testar_conexao(firebird_ds, firebird_db, firebird_user, firebird_pass) == false) { texto2 = "Conexão ao Firebird Falhou "; if (this.label1.InvokeRequired) { SetTextCallback d = new SetTextCallback(DefinirTexto); this.Invoke(d, new object[] { texto2 }); } else { this.label1.Text = texto2; } Global.gravaLog("Erro de conexão com o FireBird"); Global.Login = "******"; return; } texto2 = " Conexão ao Fire OK!"; if (this.label1.InvokeRequired) { SetTextCallback d = new SetTextCallback(DefinirTexto); this.Invoke(d, new object[] { texto2 }); } else { this.label1.Text = texto2; } Stopwatch watch = new Stopwatch(); watch.Start(); string strConn = "@DataSource=" + firebird_ds + "; Database=" + firebird_db + "; username= "******"; password = "******";Pooling=false"; FbConnection conn = new FbConnection(strConn); ///pegar ultimo registro no cloud /// if (TestaAzure(caminho) == "-2146232060") { texto2 = " Conexão com o cloud falhou!"; if (this.label1.InvokeRequired) { SetTextCallback d = new SetTextCallback(DefinirTexto); this.Invoke(d, new object[] { texto2 }); } else { this.label1.Text = texto2; } Global.gravaLog("Erro de conexão com o cloud"); Global.Login = "******"; return; } string LastReg = RetornaUltimo(); if (LastReg == "-1") { Global.gravaLog("Erro ao conectar ao cloud e captura última atualização"); Global.Login = "******"; return; } Int64 LimMax = Convert.ToInt64(LastReg); if (string.IsNullOrEmpty(LimMax.ToString())) { Global.gravaLog("Não foi possivel achar o último Registro no cloud - linha 353"); Global.Login = "******"; return; } LimMax += 10000; String fb_mysql; fb_mysql = @" select first 10000 mov_nf.id, mov_nf.situacao, mov_nf.id_pessoa, mov_nf.emitente, mov_nf.numero, mov_nf.emissao, mov_nf.tipo_pagamento, mov_nf.id_loja, mov_nf.modelo, mov_nf.digitacao, tb_nf_situacao.nome nome_nf_situacao, tb_pessoas.nome nome_pessoa, tb_nf_modelos.nome nome_nf, mov_nf_itens.id_seq, tb_produtos.nome nome_produto, mov_nf_itens.id_produto, mov_nf_itens.id_unidademedida, mov_nf_itens.quantidade, mov_nf_itens.precounitario, mov_nf_itens.valortotal, tb_produtos_unmedida.nome nome_unidade_medida, tb_produtos.id_grupos, tb_produtos_grupos.nome nome_grupo, tb_produtos.id_subgrupos, tb_produtos_subgrupos.nome nome_subgrupo from tb_nf_modelos right outer join mov_nf on (tb_nf_modelos.id = mov_nf.modelo) inner join mov_nf_itens on (mov_nf.id = mov_nf_itens.id) left outer join tb_produtos_unmedida on(mov_nf_itens.id_unidademedida = tb_produtos_unmedida.id) left outer join tb_produtos on(mov_nf_itens.id_produto = tb_produtos.id) left outer join tb_produtos_subgrupos on(tb_produtos.id_subgrupos = tb_produtos_subgrupos.id) left outer join tb_produtos_grupos on(tb_produtos.id_grupos = tb_produtos_grupos.id) left outer join tb_pessoas on(mov_nf.id_pessoa = tb_pessoas.id) inner join tb_nf_situacao on(mov_nf.situacao = tb_nf_situacao.id) where ( (mov_nf.emitente = 'P') and (mov_nf.id> " + LastReg + " and mov_nf.id< " + LimMax + @" ) and (tb_nf_situacao.nome = 'Documento regular') ) order by mov_nf.id;"; watch.Stop(); //Log log = new Log(); // log.WriteEntry(watch.Elapsed + " | Tempo de processamento na Consulta Firebird " + "\r\n"); oLog += watch.Elapsed + " | Tempo de processamento na montagem SQL " + "\r\n"; ///medir o tempo de execução watch.Restart(); texto2 = " Executando consulta no Fire "; if (this.label1.InvokeRequired) { SetTextCallback d = new SetTextCallback(DefinirTexto); this.Invoke(d, new object[] { texto2 }); } else { this.label1.Text = texto2; } int num_newRegistro = 0; try { FbCommand cmd = new FbCommand(fb_mysql, conn); // FbDataAdapter DA = new FbDataAdapter(cmd); FbDataAdapter DA2 = new FbDataAdapter(cmd); DataSet DS = new DataSet(); DataTable DT = new DataTable(); conn.Open(); // DA.Fill(DS, "teste"); DA2.Fill(DT); conn.Close(); num_newRegistro = Convert.ToInt16(DT.Rows.Count.ToString()); if (num_newRegistro < 1) { texto2 = " Não há dados novos! "; if (this.label1.InvokeRequired) { SetTextCallback d = new SetTextCallback(DefinirTexto); this.Invoke(d, new object[] { texto2 }); } else { this.label1.Text = texto2; } watch.Stop(); //Log log = new Log(); // log.WriteEntry(watch.Elapsed + " | Tempo de processamento na Consulta Firebird " + "\r\n"); oLog += watch.Elapsed + " | Não Há dados novos - aguardar próximo. " + "\r\n"; StreamWriter writer3 = new StreamWriter(arqLog, true); //Fecha o Log writer3.WriteLineAsync(oLog); oLog = null; writer3.Flush(); writer3.Close(); Global.gravaLogAzure(); Global.Login = "******"; return; } watch.Stop(); //Log log = new Log(); // log.WriteEntry(watch.Elapsed + " | Tempo de processamento na Consulta Firebird " + "\r\n"); oLog += watch.Elapsed + " | Tempo de processamento na Consulta Firebird " + "\r\n"; // dataGridView2.DataSource = DS; // dataGridView2.DataMember = "teste"; //textBox2.Text += "fim conexao"; // textBox2.Text += "GErar SQL"; //comecar o loop string str = string.Empty; string Oinsert = string.Empty; string Ovalues = string.Empty; string Osql = string.Empty; string str2 = string.Empty; watch.Restart(); texto2 = " Montando Arquivo "; if (this.label1.InvokeRequired) { SetTextCallback d = new SetTextCallback(DefinirTexto); this.Invoke(d, new object[] { texto2 }); } else { this.label1.Text = texto2; } Oinsert = @"INSERT INTO [dbo].[vendas_frigobom_full] ([ID] ,[SITUACAO] ,[ID_PESSOA] ,[EMITENTE] ,[NUMERO] ,[EMISSAO] ,[TIPO_PAGAMENTO] ,[ID_LOJA] ,[MODELO] ,[DIGITACAO] ,[NOME_NF_SITUACAO] ,[NOME_PESSOA] ,[NOME_NF] ,[ID_SEQ] ,[NOME_PRODUTO] ,[ID_PRODUTO] ,[ID_UNIDADEMEDIDA] ,[QUANTIDADE] ,[PRECOUNITARIO] ,[VALORTOTAL] ,[NOME_UNIDADE_MEDIDA] ,[ID_GRUPOS] ,[NOME_GRUPO] ,[ID_SUBGRUPOS] ,[NOME_SUBGRUPO]) VALUES "; int i = 0; int c = 0; string b = DT.Rows.Count.ToString(); foreach (DataRow dRow in DT.Rows) { i++; c++; if (i == 1) { Osql += "\r\n" + Oinsert + "(" + TrataNulo(dRow["id"].ToString()) + ",'" + dRow["situacao"].ToString() + "'," + TrataNulo(dRow["id_pessoa"].ToString()) + ",'" + dRow["emitente"].ToString() + "'," + TrataNulo(dRow["numero"].ToString()) + ",'" + ConvertData(dRow["emissao"].ToString()) + "','" + dRow["tipo_pagamento"].ToString() + "'," + TrataNulo(dRow["id_loja"].ToString()) + ",'" + dRow["modelo"].ToString() + "','" + ConvertData(dRow["digitacao"].ToString()) + "','" + dRow["nome_nf_situacao"].ToString().Replace("'", "'+char(39)+'") + "','" + dRow["nome_pessoa"].ToString().Replace("'", "'+char(39)+'") + "','" + dRow["nome_nf"].ToString().Replace("'", "'+char(39)+'") + "'," + TrataNulo(dRow["id_seq"].ToString()) + ",'" + dRow["nome_produto"].ToString().Replace("'", "'+char(39)+'") + "'," + TrataNulo(dRow["id_produto"].ToString()) + "," + TrataNulo(dRow["id_unidademedida"].ToString()) + "," + dRow["quantidade"].ToString().Replace(",", ".") + "," + dRow["precounitario"].ToString().Replace(",", ".") + "," + dRow["valortotal"].ToString().Replace(",", ".") + ",'" + dRow["nome_unidade_medida"].ToString().Replace("'", "'+char(39)+'") + "'," + TrataNulo(dRow["id_grupos"].ToString()) + ",'" + dRow["nome_grupo"].ToString().Replace("'", "'+char(39)+'") + "'," + TrataNulo(dRow["id_subgrupos"].ToString()) + ",'" + dRow["nome_subgrupo"].ToString().Replace("'", "'+char(39)+'") + "')\r\n"; } else if (i == 999) { i = 0; Osql += ",(" + TrataNulo(dRow["id"].ToString()) + ",'" + dRow["situacao"].ToString() + "'," + TrataNulo(dRow["id_pessoa"].ToString()) + ",'" + dRow["emitente"].ToString() + "'," + TrataNulo(dRow["numero"].ToString()) + ",'" + ConvertData(dRow["emissao"].ToString()) + "','" + dRow["tipo_pagamento"].ToString() + "'," + TrataNulo(dRow["id_loja"].ToString()) + ",'" + dRow["modelo"].ToString() + "','" + ConvertData(dRow["digitacao"].ToString()) + "','" + dRow["nome_nf_situacao"].ToString().Replace("'", "'+char(39)+'") + "','" + dRow["nome_pessoa"].ToString().Replace("'", "'+char(39)+'") + "','" + dRow["nome_nf"].ToString().Replace("'", "'+char(39)+'") + "'," + TrataNulo(dRow["id_seq"].ToString()) + ",'" + dRow["nome_produto"].ToString().Replace("'", "'+char(39)+'") + "'," + TrataNulo(dRow["id_produto"].ToString()) + "," + TrataNulo(dRow["id_unidademedida"].ToString()) + "," + dRow["quantidade"].ToString().Replace(",", ".") + "," + dRow["precounitario"].ToString().Replace(",", ".") + "," + dRow["valortotal"].ToString().Replace(",", ".") + ",'" + dRow["nome_unidade_medida"].ToString().Replace("'", "'+char(39)+'") + "'," + TrataNulo(dRow["id_grupos"].ToString()) + ",'" + dRow["nome_grupo"].ToString().Replace("'", "'+char(39)+'") + "'," + TrataNulo(dRow["id_subgrupos"].ToString()) + ",'" + dRow["nome_subgrupo"].ToString().Replace("'", "'+char(39)+'") + "')\r\n"; } else { Osql += ",(" + TrataNulo(dRow["id"].ToString()) + ",'" + dRow["situacao"].ToString() + "'," + TrataNulo(dRow["id_pessoa"].ToString()) + ",'" + dRow["emitente"].ToString() + "'," + TrataNulo(dRow["numero"].ToString()) + ",'" + ConvertData(dRow["emissao"].ToString()) + "','" + dRow["tipo_pagamento"].ToString() + "'," + TrataNulo(dRow["id_loja"].ToString()) + ",'" + dRow["modelo"].ToString() + "','" + ConvertData(dRow["digitacao"].ToString()) + "','" + dRow["nome_nf_situacao"].ToString().Replace("'", "'+char(39)+'") + "','" + dRow["nome_pessoa"].ToString().Replace("'", "'+char(39)+'") + "','" + dRow["nome_nf"].ToString().Replace("'", "'+char(39)+'") + "'," + TrataNulo(dRow["id_seq"].ToString()) + ",'" + dRow["nome_produto"].ToString().Replace("'", "'+char(39)+'") + "'," + TrataNulo(dRow["id_produto"].ToString()) + "," + TrataNulo(dRow["id_unidademedida"].ToString()) + "," + dRow["quantidade"].ToString().Replace(",", ".") + "," + dRow["precounitario"].ToString().Replace(",", ".") + "," + dRow["valortotal"].ToString().Replace(",", ".") + ",'" + dRow["nome_unidade_medida"].ToString().Replace("'", "'+char(39)+'") + "'," + TrataNulo(dRow["id_grupos"].ToString()) + ",'" + dRow["nome_grupo"].ToString().Replace("'", "'+char(39)+'") + "'," + TrataNulo(dRow["id_subgrupos"].ToString()) + ",'" + dRow["nome_subgrupo"].ToString().Replace("'", "'+char(39)+'") + "')\r\n"; } } //limpa a dataset DT.Clear(); watch.Stop(); //log.WriteEntry(watch.Elapsed + " | Montagemd o Sql para exportação " + "\r\n"); oLog += watch.Elapsed + " | Montagem do Sql para exportação " + "\r\n"; watch.Restart(); texto2 = " Escrevendo Arquivo! "; if (this.label1.InvokeRequired) { SetTextCallback d = new SetTextCallback(DefinirTexto); this.Invoke(d, new object[] { texto2 }); } else { this.label1.Text = texto2; } // Cria um novo arquivo e devolve um StreamWriter para ele StreamWriter writer = new StreamWriter(nomeArquivo); /* * if (!File.Exists(arqLog)) * { * StreamWriter writer1 = new StreamWriter(arqLog); * } * else * { * * }*/ // Agora é só sair escrevendo writer.WriteLine(Osql); // Não esqueça de fechar o arquivo ao terminar writer.Close(); Osql = null; conn.Close(); watch.Stop(); //log.WriteEntry(watch.Elapsed + " | Montagemd o Sql para exportação " + "\r\n"); oLog += watch.Elapsed + " | Escrevendo consulta SQL " + "\r\n"; } catch (FbException e) { Global.gravaLog(e.Message.ToString() + "linha 618"); Global.Login = "******"; Global.gravaLogAzure(); //MessageBox.Show(e.StackTrace); //MessageBox.Show(e.TargetSite.ReflectedType.Name + " + " + e.TargetSite.Name); return; } SqlConnectionStringBuilder builder = new SqlConnectionStringBuilder(); watch.Restart(); texto2 = " Conexão ao cloud "; if (this.label1.InvokeRequired) { SetTextCallback d = new SetTextCallback(DefinirTexto); this.Invoke(d, new object[] { texto2 }); } else { this.label1.Text = texto2; } // adicionar um try caso o arquivo não exista var prodx = from p in XElement.Load((CaminhoDadosXML(caminho) + @"Dados\Conexoes.xml")).Elements("Conexao") where p.Element("tipo").Value == "azure" select new { servidor = p.Element("servidor").Value, usuario = p.Element("usuario").Value, senha = p.Element("senha").Value, banco = p.Element("banco").Value, }; // Executa a consulta foreach (var produto in prodx) { string cipherText = produto.senha.Trim(); string decryptedText = CryptorEngine.Decrypt(cipherText, true); builder.DataSource = produto.servidor; builder.UserID = produto.usuario; builder.Password = decryptedText; //builder.Password = produto.senha; builder.InitialCatalog = produto.banco; builder.ConnectTimeout = 600; } //limpa memória prodx = null; texto2 = " exportando ao cloud! "; if (this.label1.InvokeRequired) { SetTextCallback d = new SetTextCallback(DefinirTexto); this.Invoke(d, new object[] { texto2 }); } else { this.label1.Text = texto2; } using (SqlConnection connection = new SqlConnection(builder.ConnectionString)) { try { connection.Open(); StreamReader texto = new StreamReader(nomeArquivo); // textBox3.Text = texto.ReadToEnd(); String sql = texto.ReadToEnd(); ///fecho e deleto o arquivo. texto.Close(); /* * if (File.Exists(nomeArquivo)) * { * File.Delete(nomeArquivo); * }*/ //exporto dados. SqlCommand command = new SqlCommand(sql, connection); command.CommandTimeout = 600; command.ExecuteNonQuery(); connection.Close(); //log.WriteEntry(watch.Elapsed + " | Exportação para o cloud concluida " + "\r\n"); sql = null; } catch (Exception ex) { //log.WriteEntry(ex); oLog += " | ocorreu um erro " + ex.Message + "\r\n"; Global.gravaLogAzure(); Global.Login = "******"; return; } } watch.Stop(); oLog += watch.Elapsed + " | Exportação para o cloud " + "\r\n"; StreamWriter writer1 = new StreamWriter(arqLog, true); //Fecha o Log writer1.WriteLineAsync(oLog); oLog = null; writer1.Flush(); writer1.Close(); texto2 = "Aguardando o Próximo!"; if (this.label1.InvokeRequired) { SetTextCallback d = new SetTextCallback(DefinirTexto); this.Invoke(d, new object[] { texto2 }); } else { this.label1.Text = texto2; } Global.Login = "******"; if (Global.CtrLog == 10) { Global.gravaLogAzure(); Global.CtrLog = 0; } else { Global.CtrLog++; } }