一个日志表,日增数据百万条以上
需要用数据库作业每天定时将前一天数据转移到月表储存
每月1日自动创建月表(第一次创建月表不限定日期)求大侠们帮忙设计个高效的储存过程!多谢!多谢!

解决方案 »

  1.   

    定时作业的制定企业管理器 
    --管理 
    --SQL Server代理 
    --右键作业 
    --新建作业 
    --"常规"项中输入作业名称 
    --"步骤"项 
    --新建 
    --"步骤名"中输入步骤名 
    --"类型"中选择"Transact-SQL 脚本(TSQL)" 
    --"数据库"选择执行命令的数据库 
    --"命令"中输入要执行的语句: 
                           EXEC 存储过程名 ... --该存储过程用于创建表 --确定 
    --"调度"项 
    --新建调度 
    --"名称"中输入调度名称 
    --"调度类型"中选择你的作业执行安排 
    --如果选择"反复出现" 
    --点"更改"来设置你的时间安排  
    然后将SQL Agent服务启动,并设置为自动启动,否则你的作业不会被执行 设置方法: 
    我的电脑--控制面板--管理工具--服务--右键 SQLSERVERAGENT--属性--启动类型--选择"自动启动"--确定. 
      

  2.   

    1、创建表
    declare @s varchar(3000)
    set @s='create table '+quotename(convert(varchar(10),getdate(),120))+' (a int,b varchar(100))'exec(@s)
    2、将前一天数据转移到月表储存
    declare @s varchar(3000)
    set @s='insert into '+quotename(convert(varchar(10),getdate(),120))+'select * from tb where quotename[datetime]=dateadd(day,-1,getdate)'
    exec(@s)设置作业的时候,写出这些sql语句。最好先试试,没有进行测试
      

  3.   

    做一个job系统定时导不就可以了吗?
      

  4.   

    1、if not exists(select 1 from sysobjects where name=convert(varchar(10),getdate(),120)
       begin
        declare @s varchar(3000) 
        set @s='create table '+quotename(convert(varchar(10),getdate(),120))+' (a int,b varchar(100))'     exec(@s) 
       end
    2、declare @s varchar(3000) 
       set @s='insert into '+quotename(convert(varchar(10),getdate(),120))+'select * from tb where quotename[datetime]=dateadd(day,-1,getdate)' 
       exec(@s) 
       delete tb where quotename[datetime]=dateadd(day,-1,getdate)这样?
      

  5.   

    insert into 月表  select * from  日表
      

  6.   

    综合楼上的应该可以解决我添加一点意见,因为是多条DDL语句,在存储过程中加入事务。begin try
    BEGIN TRANSACTION myTran commit transaction myTran
    end try begin catch 
    --加入你自己的异常LOG
    rollback TRANSACTION myTran
    end catch