LogansCodingLife 2014-07-18 09:20
浏览 4633

sqlserver数据库,按照指定日期将表中对应时间段内的记录备份出去。

业务需求:

数据库自2009年起有5年的数据量。

数据库只保存近两年的数据。比如 2012-01—01 ~ 2014-01-01

首先将 2010-01-01 ~ 2012-01-01 的数据保存到大文件夹里【比如 D:\2010年及2011年数据】,以月份命名各个文件夹【每个文件夹里有当月的所有表,表中有当月的记录】
后将 2010-01-01 ~ 2012-01-01 的数据从数据库中删除

然后每一个月的最后一天【例:2014-01-31 24:00:00 点一过,也就是2014-02-01 00:00:01时刻】,
将近两年的第一个月的信息【也就是:2012-01-01 ~ 2012-01-31 的信息备份到本地文件,命名格式『2012年1月备份信息』】。
然后将这个月的信息【2012年1月】从数据库中删除.
从而实现数据库中只保存近二年的数据。

月底自动触发脚本【ssis,dts,维护计划?】。

碰到的问题:

碰到了一个棘手的问题:

这样的备份方式需要所有的表有一个日期,这样才好分别哪些记录是2010年1月的,哪些记录是2010年2月的,从而进行备份以及删除。

---解决方法1:

首先,前些时候的数据手工备份,留下二年的数据。
因为所有的记录都在同一张表里,如果没有日期这个东西加以区别,只能人工进行判断那些数据是指定月份的。

然后,添加一个日期操作表【根据实际情况要做修改】
id tableName recordId opTime
操作Id 被操作的表名 被操作的记录 操作时间

以后根据这个表来进行指定日期的数据备份。

---解决方法2:

根据数据库日志文件进行判断,将日志文件通过某种方法转换成sql可查询的格式,根据日志,截取表名称及插入的记录和时间,根据日期进行对相应的表记录进行备份。

---更好的解决方法3: ????

  • 写回答

0条回答

    报告相同问题?

    悬赏问题

    • ¥20 有关区间dp的问题求解
    • ¥15 多电路系统共用电源的串扰问题
    • ¥15 slam rangenet++配置
    • ¥15 有没有研究水声通信方面的帮我改俩matlab代码
    • ¥15 对于相关问题的求解与代码
    • ¥15 ubuntu子系统密码忘记
    • ¥15 信号傅里叶变换在matlab上遇到的小问题请求帮助
    • ¥15 保护模式-系统加载-段寄存器
    • ¥15 电脑桌面设定一个区域禁止鼠标操作
    • ¥15 求NPF226060磁芯的详细资料