SQL SERVER迁移数据并删除历史记录

2014-11-24 13:11:50 · 作者: · 浏览: 0
SQL SERVER迁移数据并删除历史记录
01
USE [bak]
02
GO
03
/****** Object:  StoredProcedure [dbo].[pro_pay591_J_orderlog_clear]    Script Date: 08/07/2013 13:53:49 ******/
04
SET ANSI_NULLS ON
05
GO
06
SET QUOTED_IDENTIFIER ON
07
GO
08
-- =============================================
09
-- Author:  
10
-- Create date: <2013-08-07>
11
-- Description: <清理主数据库订单日志>
12
-- =============================================
13
ALTER PROCEDURE [dbo].[pro_pay_orderlog_clear]
14
 @dt_end datetime --清理此日期之前的数据
15
AS
16
BEGIN
17
 -- SET NOCOUNT ON added to prevent extra result sets from
18
 -- interfering with SELECT statements.
19
 SET NOCOUNT ON;
20

21
   declare @sqlstr varchar(8000)
22
declare @table_name varchar(30)
23
declare @theday datetime
24
set @theday = dateadd(month,-1,@dt_end)
25
set @table_name = 'ORDER_LOG_BACK_'+ltrim(year(@theday-1))+substring(ltrim(month(@theday-1)+100),2,2)
26

27
set @sqlstr = '
28

29
BEGIN
30
CREATE TABLE [dbo].'+@table_name+'(
31
 [id] [bigint] NOT NULL,
32
 [order_id] [bigint] NULL,
33
 [op_type] [tinyint] NULL,
34
 [ip] [varchar](50) NULL,
35
 [login_name] [varchar](50) NULL,
36
 [org_data] [varchar](1024) NULL,
37
 [new_data] [varchar](1024) NULL,
38
 [op_time] [datetime] NULL CONSTRAINT [DF__'+@table_name+'__op_ti__4222D4EF]  DEFAULT (getdate()),
39
 [remark] [varchar](8000) NULL,
40
 CONSTRAINT [PK_'+@table_name+'] PRIMARY KEY CLUSTERED
41
(
42
 [id] Desc
43
)WITH (IGNORE_DUP_KEY = OFF) ON [PRIMARY]
44
) ON [PRIMARY]
45
END
46
'
47

48
IF NOT EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(@table_name) AND type in (N'U'))
49
exec(@sqlstr)
50

51
set @sqlstr = '
52

53
delete  from pay.dbo.ORDER_LOG
54
output deleted.*
55
 into  '+@table_name+' ([id]
56
           ,[order_id]
57
           ,[op_type]
58
           ,[ip]
59
           ,[login_name]
60
           ,[org_data]
61
           ,[new_data]
62
           ,[op_time]
63
           ,[remark])
64
where [op_time] < '''+convert(varchar(20),@theday)+''''
65
exec(@sqlstr)
66
END