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 框架图如下:

 

 

包的设计

 

 

 

 

 

代码下载:

Barry_BI.zip

 

posted @ 2019-05-19 21:50  曾新文  阅读(3968)  评论(0编辑  收藏  举报