直接删除就可以了:
delete from t where datediff(day,JGSJ,getdate())>7

解决方案 »

  1.   

    存储过程是一样的,只有一句:
    create procedure sp_1
    as
      delete from t where datediff(day,JGSJ,getdate())>7
    go
      

  2.   

    TO:pbsql(风云)     非常感谢你的无私的帮助,谢谢你........明天结帖!
      

  3.   

    新建一个作业,每天运行一次delete from t where datediff(day,JGSJ,getdate())>7
    就行了
      

  4.   

    我最烦的是数据库占用内存太大.表太大了.如何限制SQL 的内存(不影响数据的插入,操作的前提)有什么配置方法及有效的限制方法吗?
      

  5.   

    方法:
    打开企业管理器->服务器->管理->SQL SERVER 代理->作业
      

  6.   

    建作业,定时run比较好,否则你程序里面还要写监控?还要一直开着?最后问一下,如何能在我删除数据库纪录,我的目录下文件也能对应删除?(不一定要回答)楼主意思,删除的那条里面有文件名的信息?如果是,那么写一个触发器,里面调用xp_cmdshell来删除
      

  7.   

    TO: mgsray(我是新新新新,新来的吧)    里面有文件的路径.想在删除数据记录,也能顺便删除某个目录下的图片文件...谢谢!!!!!!
      

  8.   

    1.既然每天都要删除,我想应该用作业定时自动处理比较好,这样不用人工干预,而且也可以把它放到没有什么人用的时候去进行处理,比较凌晨1点2.删除记录的时候,如果要连文件一齐删除,那速度就慢了,如果你的文件命名有规则,可以用 delete xx*.* 之类的来删除,否则要用游标逐个删除文件,那数据量在的话,可能拖死服务器3.删除记录的处理语句,建议这样写,效率会高很多:
      delete from t where JGSJ<dateadd(day,-7,convert(char(10),getdate(),120))
      

  9.   

    create trigger t_table on t for delete
    as 
    declare @file varchar(300)
    declare cur_1 cursor  for select filepath --路径字段名
       from deleted
    open cur_1
    fetch next from cur_1 into @file
    while (@@fetch_status=0)
    begin

    exec master..xp_cmdshell 'del '+@file
    fetch next from cur_1 into @file
    end
    close cur_1
    deallocate cur_1
      

  10.   

    我在等你 zjcxc(邹建) 你众于出马了!!!呵呵 !明天结帖子!
      

  11.   

    delete from t where JGSJ<(getdate()-7)
      

  12.   

    /*--我的处理方案是这样的 假设楼主要处理的数据库名为: Db_Test
    表名是: test
    删除处理判断的日期字段是: JGSJ
    要删除的文件名(包括目录信息)保存的字段是: filename

    要求每天凌晨1点自动清理7天前的记录,并且删除对应的文件
    --*/--切换到要处理的数据库
    use Db_Test
    go--设置 SQL Agent 服务为自动启动
    exec msdb..sp_set_sqlagent_properties @auto_start=1
    go--创建数据处理的作业
    exec msdb..sp_add_job @job_name='数据处理'--创建作业步骤
    declare @sql varchar(800),@dbname varchar(250)
    select @sql='
    --删除处理的语句--生成删除文件的批处理文件,这样在删除文件时,把处理交给系统
    --也避免了用游标循环处理数据,消耗服务器资源
    declare @sql nvarchar(4000)
    select @sql=''select ''''del ''''+char(34)+rtrim(filename)+char(34) from [''+db_name()+''].dbo.Test where JGSJ<dateadd(day,-7,convert(char(10),getdate(),120))''
    ,@sql=@sql+'' union all select ''''del c:\08CC6E01_0D8E.bat'''''' --批处理的最后是要销毁自己
    ,@sql=''bcp "''+@sql+''" quertout "c:\08CC6E01_0D8E.bat" /U"sa" /P"密码" /c''
    exec master..xp_cmdshell @sql--删除表中的数据
    delete from t where JGSJ<dateadd(day,-7,convert(char(10),getdate(),120))--调用批处理删除文件
    exec master..xp_cmdshell ''c:\08CC6E01_0D8E.bat''
    '  --数据处理的命令
    ,@dbname=db_name() --执行数据处理的数据库名exec msdb..sp_add_jobstep @job_name='数据处理',
    @step_name = '数据删除',
    @subsystem = 'TSQL',
    @database_name=@dbname,
    @command = @sql,
    @retry_attempts = 5,  --重试次数
    @retry_interval = 5   --重试间隔--创建调度
    EXEC msdb..sp_add_jobschedule @job_name = '数据处理', 
    @name = '时间安排',
    @freq_type=4,   --4 每天,8 每周,16 每月
    @freq_interval=1, --作业执行的天数
    @freq_subday_type=0, --是否重复执行,0x1 在指定的时间, 0x4 分钟, 0x8 小时 
    @freq_subday_interval=1,  --重复周期
    @freq_recurrence_factor=0, --重复执行,则设置为1,否则设置为0
    @active_start_time = 00000 --0点开始执行-- 添加目标服务器
    EXEC msdb.dbo.sp_add_jobserver 
    @job_name = '数据处理' ,
    @server_name = N'(local)' 
      

  13.   

    关于内存的控制:
    企业管理器->服务器->右键->属性->内存