SQL 删除旧的数据 (删除两年前的所有记录)
目前公司的数据库有7年的数据,有没有办法直接把全部表中2年前的都删除?
而不需要一个表一个表的进去删除?
谢谢
------解决方案--------------------没有。手动数据归档。
------解决方案--------------------我记得我们公司这样来写的,大于1年前的数据自动来删除,具体不知道怎么来实现的
------解决方案--------------------做个游标不久可以了吗,读所有的表,并且表中有字段sDate(假如你的时间字段为他)
select b.name as tblname,a.name as fldname syscolumns a ,sysobjects b
where a.id=b.id and b.xtype='u' and a.name='sDate'
------解决方案--------------------
/************************************************************/
/*功能:批量删除表*/
/*定义游标*/
/************************************************************/
DECLARE @TABLENAME VARCHAR(50),@SQL1 VARCHAR(500)
DECLARE Cur_DropTable CURSOR FOR
SELECT name
FROM sysobjects
WHERE Upper(Type) = 'U' and name like 'tmp%' or name like 'zhx#%'
ORDER BY name
OPEN Cur_DropTable
FETCH NEXT FROM Cur_DropTable
INTO @TABLENAME
/*循环执行*/
WHILE @@FETCH_STATUS = 0
BEGIN
SET @SQL1 = ' drop TABLE ' + @TABLENAME
EXECUTE(@SQL1)
PRINT '表:'+ @TABLENAME + '删除成功......'
FETCH NEXT FROM Cur_DropTable
INTO @TABLENAME
END
CLOSE Cur_DropTable
DEALLOCATE Cur_DropTable
GO
lz先看看,有些要改一下,这个是删除一些有规律的表。
------解决方案--------------------写批处理吧,从sysobjects 获取所需要的表,然后拼sql语句执行