数据备份

在上线前的测试阶段,要频繁测试某些参数,随着基础数据和测试数据的增加,需要反复地初始化系统,能够灵活快速地将数据恢复到某个时点就比较重要了,让人记得每天都做一件事情是比较费劲的,当然吃饭睡觉除外。
AX有数据导入导出的功能,并且这些类都是继承自RunbaseBatch的,也就是说可以做定期备份的,但是有一个问题是,文件名的问题,如果不处理一下,由于只有一个文件名,它每次都会把上次的备份给覆盖掉,这当然不是我们所希望看到的。本文描述一下如何修改代码使其每天可自动备份一个文件,只针对初学者,高手就不必看了。
一.修改代码处理文件名
找到类SysDataExpImp,把unpack方法修改如下:

Code
public boolean unpack(container packedClass)
{
    version     version     
= RunBase::getVersion(packedClass);
    container   c;
    #DataBackup
    boolean     ret;

    
switch (version)
    {
        
case #CurrentVersion:
            [version,#CurrentList,c] 
= packedClass;

            ret 
= super(c);
            
//Farseer Begin 2009.03
            
switch(this.parmGroupId())
            {
                
case "All":
                    fileName 
= #AllData + Date2str(systemDateGet(),321,2,3,2,3,4+ "   "+time2str(timenow(),3,3);
                    
break;
                
case "Main":
                    fileName 
= #MainData + Date2str(systemDateGet(),321,2,3,2,3,4+ "  "+time2str(timenow(),3,3);
                    
break;
            }
            
return ret;
            
//Farseer End 2009.03
        
default:
            
return false;
    }

    
return true;
}

其中#DataBackup是一个宏,在里面定义了两个路径,分别用来存放全部数据的备份#AllData和只包含主数据的备份#MainData。

二.定义组
我的做法一般都是备份两份数据,1.包含全部数据,2.只包含主数据,不包含交易。组的名字分别为All和Main。
系统管理->期间->数据导入/导出->定义组
新建两个组,名字分别为All和Main,在包括表组选项卡中,All这个组选中所有的表组,而Main只选择前四项,既杂项,参数,组和主要。如下图所示:
All:

Main

三.定义导出数据的批处理和及其频率
选中刚建好的组,点击导出

设置选择批处理

选择 重复执行,设置执行备份数据的频率,如果想每天晚上执行一次,则可以按照如下设置方式,当然这个东西就看每个人的想法了。

四.执行批处理
基本设置->期间->批处理->处理,点击确定,让它运行就OK了。

原文地址:https://www.cnblogs.com/Farseer1215/p/1442017.html