在包的日誌資訊中沒有記當包執行成功的日誌,有時候我們只關心包執行成功,還是失敗。
雖然預設情況下SQL Server SSIS記錄提供者沒有記錄包執行的成功資訊,不過,可以修改它所調用的預存程序來實現記錄一條成功的資訊。
1. 包的控制流程中空白處,右鍵->j日誌記錄
2. 添加一個SQL Server SSIS記錄提供者程式,並嚮導配置連接字串。
3. 在詳細資料中選中Onerror事件
在包的第一次運行時,它裝在資料庫中建立一個表和預存程序名字分別為:sysdtslog90,sp_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