目前公司的数据库有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'
      

  2.   

    /************************************************************/
    /*功能:批量删除表*/
    /*定义游标*/
    /************************************************************/
    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 nameOPEN Cur_DropTableFETCH 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
    ENDCLOSE Cur_DropTable
    DEALLOCATE Cur_DropTable
    GO
    lz先看看,有些要改一下,这个是删除一些有规律的表。
      

  3.   

    写批处理吧,从sysobjects 获取所需要的表,然后拼sql语句执行