SSIS 系列 - SSIS 日志框架
配套视频:
链接:https://pan.baidu.com/s/1WOEvesIUK2Hi4KB_-YJUKA
提取码:pdbq
本事例, 有两个项目,一个数据项目,一个SSIS项目
SSIS 日志框架, 主要是包括数据库日志,及存储过程记录. 以及包的日志部份
表的设计 , ETL日志, 还有存储过程执行情况(有时间需要查看优化存储过程,历史执行时间是一种参考值)
1.日志表
日志 开始时间 结束时间
---------------------------------------------------------
101 2019-03-01 13:00 2019-03-02:00
2错误表
日志ID,错误ID,错误信息
-------------------------------------
101, 1 , 找不到表
3.存储过程,
这里异常需要throw ,因为我们是通过SSIS 获得它的异常
-- ============================================= -- Author: 新文 -- Create date: 2018-07-20 -- Description: 例子 -- -- ============================================= CREATE PROCEDURE [dbo].[usp_fact_demo] AS BEGIN DECLARE @begin_time DATETIME= GETDATE() , @status int=0 , @errormsg nvarchar(max), @sp_name VARCHAR(200)= object_name(@@procid) , @pre_Snap_Period date, @spid INT; INSERT [dbo].[etl_sp_log]([SPName] ,[Start_Time],[Execute_Status_ID]) VALUES (@sp_name,GETDATE(),0) SELECT @spid = @@IDENTITY BEGIN TRY --BEGIN TRAN 注意 多条语句 中如果有回滚严重就不要用 select 1 --COMMIT TRAN END TRY BEGIN CATCH --- ROLLBACK TRAN SELECT @errormsg = ERROR_MESSAGE() UPDATE [dbo].[etl_sp_log] SET [Execute_Status_ID]=3,[Finish_Time]=GETDATE(),Msg=@errormsg WHERE SPId= @spid ; THROW ; END CATCH UPDATE [dbo].[etl_sp_log] SET [Execute_Status_ID]=2,[Finish_Time]=GETDATE() WHERE SPId= @spid END
ETL package 框架图如下:
包的设计
代码下载:
转载文章,请注明出处