Пример #1
0
 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();
     }
 }
Пример #2
0
        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));
        }
Пример #3
0
        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 + "'");
            //}
        }