旋风

Communication comes from our hears and heads! my msn:youpeizun@hotmail.com


导航

修改存储过程插入自定义的SSIS SQL Server 日志信息

Posted on 2008-06-30 17:52  xuanfeng  阅读(1393)  评论(0编辑  收藏  举报
      在包的日志信息中没有记当包执行成功的日志,有时候我们只关心包执行成功,还是失败。

虽然默认情况下SQL Server SSIS日志提供程序没有记录包执行的成功信息,不过,可以修改它所调用的存储过程来实现记录一条成功的信息。

1. 包的控制流中空白处,右键->j日志记录

2. 添加一个SQL Server SSIS日志提供程序程序,并向导配置连接字符串。

3. 在详细信息中选中Onerror事件

在包的第一次运行时,它装在数据库中创建一个表和存储过程名字分别为:sysdtslog90sp_dts_addlogentry

     接下来我们就可以修改它的存储过程来实现我们自定义的日志记录啦!

     下面就实现了一个添加成功信息的存储过程供有兴趣的朋友参考: 

ALTER PROCEDURE [dbo].[sp_dts_addlogentry] 
 @event sysname,  @computer nvarchar(
128),  @operator nvarchar(128), 
 @source nvarchar(
1024),  @sourceid uniqueidentifier, 
 @executionid uniqueidentifier,  @starttime datetime, 
 @endtime datetime,  @datacode 
int,  @databytes image, 
 @message nvarchar(
2048)AS  

INSERT INTO sysdtslog90 
(  
event, computer, operator,   
   source, sourceid, executionid,   
   starttime, endtime, datacode,    
  databytes,  message )  VALUES 
(  @event, @computer,  @operator,  
    @source, @sourceid, @executionid,   
   @starttime, @endtime, @datacode,     
 @databytes,@message )  
--在包执行结束的时候,查找,如查不存在OnError 事件,说明该包已经执行成功啦
if @event='PackageEnd'
begin
if not exists(select * from sysdtslog90 where executionid=@executionid and [event]='OnError'   )
begin
INSERT INTO sysdtslog90 
(  
event, computer, operator,   
   source, sourceid, executionid,   
   starttime, endtime, datacode,    
  databytes,  message )  VALUES 
(  
'successed', @computer,  @operator,  
    @source, @sourceid, @executionid,   
   @starttime, @endtime, @datacode,     
 @databytes,
'包处理成功!' )  

end
end