public void ExecuteInstructions(Table source, Table dest)
        {
            TableComparator tc = new TableComparator();

            /*
             * if(Preferences.JobAtual.DDLEnabled){
             *  VerifyTable(dest.TableName, source);
             * }
             */

            List <TableRow> modifiedRows = tc.SearchForObjectDifferences(source, dest);

            ExecuteSyncIntoTable(modifiedRows, dest);

            if (source.TableInfo.EnableIdentitySync)
            {
                SyncIndetidy(source.TableInfo, dest.TableInfo);
            }
        }
        public TableDiff compareRemoteAndLocal(string server1, string dbname1, string username1, string password1, string server2, string dbname2)
        {
            // Logger
            logger.Info("[ compareRemoteAndLocal ] - database1 : " + server1 + " , " + dbname1 + " , " + username1 + " , " + password1 + " ; database2 : " + server2 + " , " + dbname2 + ";");
            DateTime start = DateTime.Now;

            logger.Info("[ compareRemoteAndLocal ] - start time : " + start.ToString());

            // Init the basic info about response body
            TableDiff rtn = new TableDiff();

            rtn.code = ResponseCode.SUCCESS;
            rtn.msg  = "Succecssful";

            if (server1 == null || dbname1 == null || username1 == null || password1 == null || server2 == null || dbname2 == null ||
                server1.Trim() == "" || dbname1.Trim() == "" || username1.Trim() == "" || password1.Trim() == "" || server2.Trim() == "" || dbname2.Trim() == "")
            {
                rtn.code = ResponseCode.INPUT_ERROR;
                rtn.msg  = "Null inputs are not be allowed!";
                return(rtn);
            }

            // Connect to database
            SqlConnection conn1 = SqlServer.createConnectionRemote(server1, dbname1, username1, password1);
            SqlConnection conn2 = SqlServer.createConnectionLocal(server2, dbname2);

            if (conn1 == null || conn2 == null)
            {
                rtn.code = ResponseCode.DB_NOT_FUND;
                rtn.msg  = "Database not found";
                // close the database connection
                if (conn1 != null)
                {
                    conn1.Close();
                }
                if (conn2 != null)
                {
                    conn2.Close();
                }

                return(rtn);
            }

            // Compare the tables between two databases
            TableComparator tbCompare = new TableComparator();

            rtn.tables = tbCompare.compareTables(conn1, conn2);

            // Compare the stored procedures between two databases
            StoredProcedureComparator pc = new StoredProcedureComparator();

            rtn.storedProcedures = pc.compareStoredProcedure(conn1, conn2);

            // Compare the functions between two databases
            FunctionComparator fc = new FunctionComparator();

            rtn.functions = fc.compareFunctions(conn1, conn2);

            // close the database connection
            conn1.Close();
            conn2.Close();

            // Logger
            DateTime end = DateTime.Now;

            logger.Info("[ compareRemoteAndLocal ] - end time : " + end.ToString() + " ; spend time : " + (end - start).ToString() + "\n");
            return(rtn);
        }