1200字范文,内容丰富有趣,写作的好帮手!
1200字范文 > SQL Server 存储过程定时转存数据

SQL Server 存储过程定时转存数据

时间:2021-02-18 09:10:54

相关推荐

SQL Server 存储过程定时转存数据

SQL Server 存储过程,定时将临时表中今天之前的数据转存到对应年月的历史表中,执行如下语句创建存储过程,然后创建SQL Server 代理作业,计划设置为每天定时执行

USE [MYDATABASE]

GO

/****** Object: StoredProcedure [dbo].[sp_YourProcedure] Script Date: /10/31 17:06:29 ******/

SET ANSI_NULLS ON

GO

SET QUOTED_IDENTIFIER ON

GO

create PROCEDURE [dbo].[sp_YourProcedure] --创建存储过程

as

BEGIN

BEGIN TRAN Tran_MoveData --开始事务

DECLARE @tran_error int;

declare @tablename varchar(50) ; --历史表名

declare @tableDate varchar(50); --历史表对应的年月

declare @sql NVARCHAR(MAX) ,@sql1 NVARCHAR(MAX);

declare @beginTime varchar(50),@endTime varchar(50);

set @beginTime = convert(datetime,convert(varchar(7),getdate()-1,120)+'-01',120);--昨天月初零点

set @endTime =convert(datetime,convert(varchar(10),getdate(),120));--今天零点

set @tableDate = CONVERT(varchar(7), GETDATE()-1, 120);--获取昨天的年月

set @tablename = 'T_BF_'+ REPLACE(REPLACE(REPLACE(@tableDate,'-',''),' ',''),':',''); --历史表名定义为前缀加时间

set @sql = 'insert into '+@tablename+' select ID

,Filed1

,Filed2

,Filed3

,Create_Time

from T_BF_TempTable where Create_Time between'''+@beginTime+''' and '''+@endTime+''''; --转存数据

set @sql1 = ' delete from T_BF_TempTable where Create_Time between'''+@beginTime+''' and '''+@endTime+''''; --删除原数据

SET @tran_error = 0;

BEGIN TRY

exec(@sql+@sql1)

END TRY

BEGIN CATCH

SET @tran_error = @tran_error + 1

END CATCH

IF(@tran_error > 0)

BEGIN

ROLLBACK TRAN;--回滚

END

ELSE

BEGIN

COMMIT TRAN;--提交

END

end

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。