public Synchronizer(IDatabaseSource src, IDatabaseSource dst, IProgressInfo progress, DataSynDef datasyn, DataSynReportEnv repenv, string outFile, DataSynGuiEnv guienv) { m_source = src; m_target = dst; m_progress = progress; m_datasyn = datasyn; m_outFile = outFile; m_srcSada = m_source.Dialect.CreateDataSynAdapter(); m_dstSada = m_target.Dialect.CreateDataSynAdapter(); m_dstDDA = m_target.GetAnyDDA(); m_reportEnvObj = repenv; m_reportEnv = repenv; m_guienv = guienv; if (m_reportEnv == null) { m_reportEnv = new DummyDataSynReportEnv(); } }
public virtual void SendScript(IPhysicalConnection conn, List <string> script, List <string> batchBegin, List <string> batchEnd, DataSynOperation operation, IDataSynReportEnv repenv) { var fullcmd = new List <string>(); if (batchBegin != null) { fullcmd.AddRange(batchBegin); } fullcmd.AddRange(script); if (batchEnd != null) { fullcmd.AddRange(batchEnd); } repenv.SendScriptWrapper(new DataSynScriptWrapper_ExecuteNonQuery(fullcmd.CreateDelimitedText(";\n"), operation, conn.SystemConnection)); }
public override void SendScript(IPhysicalConnection conn, List <string> script, List <string> batchBegin, List <string> batchEnd, DataSynOperation operation, IDataSynReportEnv repenv) { int maxpacket = Int32.Parse(conn.SystemConnection.ExecuteScalar("select @@max_allowed_packet").ToString()); string oldmode = conn.SystemConnection.ExecuteScalar("SELECT @@SQL_MODE").ToString(); string begin = "SET SQL_MODE='NO_AUTO_VALUE_ON_ZERO';\n"; foreach (string s in batchBegin) { begin += s + ";\n"; } string end = "SET SQL_MODE='" + oldmode + "';\n"; foreach (string s in batchEnd) { end += s + ";\n"; } //try //{ // conn.SystemConnection.ExecuteNonQuery("SET SQL_MODE='NO_AUTO_VALUE_ON_ZERO'"); var sb = new StringBuilder(); foreach (string sql in script) { if (sb.Length + sql.Length + begin.Length + end.Length > maxpacket / 4) { repenv.SendScriptWrapper(new DataSynScriptWrapper_ExecuteNonQuery(begin + sb.ToString() + end, operation, conn.SystemConnection)); sb = new StringBuilder(); } sb.Append(sql); sb.Append(";"); } if (sb.Length > 0) { conn.SystemConnection.ExecuteNonQuery(begin + sb.ToString() + end); } //} //finally //{ // conn.SystemConnection.ExecuteNonQuery("SET SQL_MODE='" + oldmode + "'"); //} }