日期:2014-05-17  浏览次数:21379 次

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语句执行