日期:2014-05-19  浏览次数:20497 次

请教两个存储过程
第一个想要实现清空数据库日志文件

第二个想把a表中超过30天的数据转存到b表中,a表中不存在超过30天的数据(该存储过程每天都执行,不是只执行一次)
a+b表中的数据就是所有数据。。。不能丢失任何一条

不知道这样描述是否清楚,求教

------解决方案--------------------
第一个问题:
——————————————————————————————
截断事务日志:

BACKUP LOG { database_name | @database_name_var }
{
[ WITH
{ NO_LOG | TRUNCATE_ONLY } ]
}


------解决方案--------------------
第二个:
————————————————————————
insert into B
select * from A
where not exists (select 1 from B where a.id=b.id) and datediff(dd,A表的日期,getdate())> =30

delete from A
where exists (select 1 from B where a.id=b.id)
------解决方案--------------------
1.backup log 数据库名 with no_log

2.
服务器: 消息 8101,级别 16,状态 1,过程 backupdata,行 2
仅当使用了列的列表,并且 IDENTITY_INSERT 为 ON 时,才能在表 'b ' 中为标识列指定显式值。
如果b中有自增列,建议把自增属性去掉,因为b表是同步a表的.如果不去掉的话要显示地写出字段列表来,不能用*
--插入
SET IDENTITY_INSERT ON
insert into b(字段列表)
select 字段列表 from a
where datediff(day,日期字段,getdate())> 30
SET IDENTITY_INSERT OFF
--删除
delete from a where datediff(day,日期字段,getdate())> 30