2 jack85986370 jack85986370 于 2014.07.18 17:20 提问

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: ????

Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!